Toon posts:

[PHP] Met behulp van TCPDF meerdere PDF documenten genereren

Pagina: 1
Acties:

Onderwerpen


  • DeepFreeze.NL
  • Registratie: april 2006
  • Laatst online: 26-08 06:50
Ik probeer middels TCPDF enkele .PDF bestanden te genereren en op te slaan op de server. Nu heb ik een eigen functie gemaakt die het .PDF bestand genereert en vervolgens de content van het .PDF bestand in een array zet. Vervolgens loop ik door de array heen om de bestanden 1 voor 1 op de server te zetten.

Nu krijg ik altijd om één of andere reden dat het 1e bestand gewoon goed werkt en het 2e aangemaakte bestand alleen een blanco pagina toont.

Als ik de content van het PDF bestand bekijk (Wat voor een overgroot deel onleesbaar is) zie ik ook geen opvallende afwijkingen.

Wie weet wat ik nu dus fout doe?

Overigens staat in "pdf_brief.php" alleen het woordje "Hoi". Bij het 1e aangemaakte .PDF bestand staat dit wel in het document. Bij het 2e aangemaakte bestand krijg ik dus niets te zien (blanco).

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
session_start();

function createPDF($content='',$output='',$author='',$title='',$subject='',$keywords='', $secured) {
    require_once('tcpdf/config/lang/eng.php');
    require_once('tcpdf/tcpdf.php');
    
    // create new PDF document
    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, 'A4', true, 'UTF-8', false);
    
    // set document information
    $pdf->SetCreator(PDF_CREATOR);
    $pdf->SetAuthor($author);
    $pdf->SetTitle($title);
    $pdf->SetSubject($subject);
    $pdf->SetKeywords($keywords);
    
    // Set PDF protection (encryption)
    if ($secured == true) {
        $pdf->SetProtection($permissions=array('modify', 'copy', 'annot-forms', 'fill-forms', 'extract', 'assemble'), $user_pass='', $owner_pass=null, $mode=1, $pubkeys=null);
    }
    
    // remove default header/footer
    $pdf->setPrintHeader(false);
    $pdf->setPrintFooter(false);
    
    // set default monospaced font
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

    //set margins
    $pdf->SetMargins(20, PDF_MARGIN_TOP, 20);
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
    
    //set auto page breaks
    $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        
    //set image scale factor
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
    
    //set some language-dependent strings
    $pdf->setLanguageArray($l);
    
    // add a page
    $pdf->AddPage();
    
    // Get HTML content
    ob_start();
                
    switch ($content) {
        case "brief": require_once('pdf_brief.php'); break;
    }
    
    // Ophalen en opruimen
    $html = ob_get_contents();
    ob_end_clean();
    
    // output the HTML content
    $pdf->writeHTML($html, true, false, true, false, '');
    
    // reset pointer to the last page
    $pdf->lastPage();
    
    //Close and output PDF document
    switch ($output) {
        case "stream": return $pdf->Output('', 'S'); break;
        case "inline": return $pdf->Output(''.$subject.'.pdf', 'I'); break;
        case "download": return $pdf->Output(''.$subject.'.pdf', 'D'); break;
    }
}

// Brief 1
if ($_SESSION['brief_1'] == "Ja") {
    $pdf = createPDF('brief','stream','','Brief 1','','',true);
    $bijlagen[] = array("content"=>$pdf, "naam"=>"Brief 1.pdf", "type"=>"stream");
}

// Brief 2
if ($_SESSION['brief_2'] == "Ja") {
    $pdf = createPDF('brief','stream','','Brief 2','','',true);
    $bijlagen[] = array("content"=>$pdf, "naam"=>"Brief 2.pdf", "type"=>"stream");
}


//echo '<pre>', print_r($bijlagen) ,'</pre>';

foreach($bijlagen as $bijlage) {
    if ($bijlage['type'] == "stream") {
        //echo "<pre>".$bijlage['content']."</pre>";
        $dir = strtolower($_SERVER['DOCUMENT_ROOT']."/test_pdf/");
        if (!file_exists($dir)) { mkdir(str_replace('//','/',$dir), 0777, true); }
        $filename = str_replace('//','/',strtolower($dir."/".$bijlage['naam']));
        $fp = fopen($filename, "a");
        fwrite($fp, $bijlage['content']);
        fclose($fp);
    }
}

  • HuHu
  • Registratie: maart 2005
  • Niet online
Zijn er PHP errors, warnings, notices?

  • OnTracK
  • Registratie: oktober 2002
  • Laatst online: 23:45
Je doet een require_once in een functie, maar roept die functie twee keer aan. Ergo, de tweede keer zal er niks worden ge'required, want dat was al een keer gedaan.

Nou vind ik die manier van output buffering en includen / requiren sowieso niet zo geweldig eruit zien, maar dat veranderen naar include / require [bestand] zal waarschijnlijk wel de oplossing bieden.

[Voor 36% gewijzigd door OnTracK op 08-10-2010 18:05]

Not everybody wins, and certainly not everybody wins all the time.
But once you get into your boat, push off and tie into your shoes.
Then you have indeed won far more than those who have never tried.


  • dev10
  • Registratie: april 2005
  • Laatst online: 20-09 16:37
OnTracK schreef op vrijdag 08 oktober 2010 @ 18:04:
Nou vind ik die manier van output buffering en includen / requiren sowieso niet zo geweldig eruit zien, maar dat veranderen naar include / require [bestand] zal waarschijnlijk wel de oplossing bieden.
Misschien is het nog handiger om die require_once voor de tcpdf buiten de functie scope te zetten. ;)

  • Cartman!
  • Registratie: april 2000
  • Niet online
Het gaat om de require_once van pdf_brief.php, niet om die van tcpdf, dat kan opzich geen kwaad.

  • DeepFreeze.NL
  • Registratie: april 2006
  • Laatst online: 26-08 06:50
OnTracK schreef op vrijdag 08 oktober 2010 @ 18:04:
Je doet een require_once in een functie, maar roept die functie twee keer aan. Ergo, de tweede keer zal er niks worden ge'required, want dat was al een keer gedaan.

Nou vind ik die manier van output buffering en includen / requiren sowieso niet zo geweldig eruit zien, maar dat veranderen naar include / require [bestand] zal waarschijnlijk wel de oplossing bieden.
Je had gelijk, het was de require_once van pdf_brief.php. |:(
Thanks!
Pagina: 1


Nintendo Switch (OLED model) Apple iPhone 13 LG G1 Google Pixel 6 Call of Duty: Vanguard Samsung Galaxy S21 5G Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True

Tweakers maakt gebruik van cookies

Bij het bezoeken van het forum plaatst Tweakers alleen functionele en analytische cookies voor optimalisatie en analyse om de website-ervaring te verbeteren. Op het forum worden geen trackingcookies geplaatst. Voor het bekijken van video's en grafieken van derden vragen we je toestemming, we gebruiken daarvoor externe tooling die mogelijk cookies kunnen plaatsen.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Forum cookie-instellingen

Bekijk de onderstaande instellingen en maak je keuze. Meer informatie vind je in ons cookiebeleid.

Functionele en analytische cookies

Deze cookies helpen de website zijn functies uit te voeren en zijn verplicht. Meer details

janee

    Cookies van derden

    Deze cookies kunnen geplaatst worden door derde partijen via ingesloten content en om de gebruikerservaring van de website te verbeteren. Meer details

    janee