-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathgenerate_zip.inc.php
67 lines (51 loc) · 1.49 KB
/
generate_zip.inc.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
require_once('generate_pdf.inc.php');
require_once('generate_xml.inc.php');
require_once('config.inc.php');
function type_from_node(DOMNode $node)
{
foreach($node->childNodes as $child)
if($child->nodeName == "type")
return $child->nodeValue;
return "";
}
function zip_files($filenames,$zipname = "reports.zip")
{
$zip = new ZipArchive();
if($zip->open($zipname,ZipArchive::OVERWRITE | ZipArchive::CREATE) != true)
throw new Exception("Failed to create zip file ".$zipname);
foreach($filenames as $localfilename => $shortfilename)
{
set_time_limit(0);
if(!$zip->addFile($localfilename, $shortfilename))
{
echo "Failed to add file ".$shortfilename." to zip file<br/>";
// return false;
}
}
$zip->close();
return $zipname;
}
function xml_to_pdfs($xml_reports)
{
$filenames = array();
$rapports = $xml_reports->firstChild->getElementsByTagName("rapport");
//echo "Processing ".count($docs)." docs<br/>";
foreach($rapports as $node)
{
//it takes time so we tell the server the script is still alive
set_time_limit(0);
$filename = $node->getAttribute('filename').".pdf";
$local_filename = replace_accents("reports/".$filename);
$xsl = new DOMDocument("1.0","utf-8");
$xsl->load(type_to_xsl($node->getAttribute('type')));
$proc = new XSLTProcessor();
$proc->importStyleSheet($xsl);
$html = $proc->transformToXML($node);
$pdf = HTMLToPDF($html);
$pdf->Output($local_filename,"F");
$filenames[$local_filename] = $filename;
}
return $filenames;
}
?>