[PHP] PDF bestanden aan elkaar 'plakken'.

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo,

Op mijn website krijgen gebruikers de mogelijkheid om pdf bestanden te genereren. (In dit geval opzegbrieven voor bedrijven.) Deze opzegbrieven kunnen gelijk gedownload worden of opgeslagen worden voor later gebruik.In het geval van opslaan voor later gebruik wordt de pdf output als een string opgeslagen in een BLOB veld in de datebase. Nu wil het weleens het geval zijn dat een gebruiker 2 of meer opzegbrieven heeft opgeslagen voor 'later gebruik'. De gebruiker wil ik nu de optie geven 'Alles downloaden'. Dit houdt in dat alle brieven in één pdf file komen te staan, maar wel allemaal op een aparte pagina uiteraard. Echter werkt dit niet als ik letter alles achter elkaar plak omdat hij dan stopt na brief één.

Heeft iemand enig idee hoe dit wel kan?
Ik gebruik overigens FPDF om de pdf'jes te generen.
Thanks.

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Ik zou niet de PDF-output, maar de originele gegevens opslaan in de database. Vervolgens kun je die gegevens aan elkaar plakken en er een PDF van parsen. Dat lijkt me een stuk netter.

P.S. Op de site van FPDF kijken wil ook wel eens helpen, http://www.fpdf.org/ --> FAQ --> vraag 17 :)

[ Voor 5% gewijzigd door Rekcor op 03-09-2009 14:10 . Reden: typo ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Ik heb dit zelf laatst ook uit proberen te zoeken maar omdat eigenlijk geen van de standaard (gratis) oplossingen voor PHP echt werkte (of in veel gevallen werkte het überhaupt niet) ben ik maar aan de slag gegaan met PDFTeX:
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
public function GenerateMergedPDF($pdfs = array(), $removeTempOutput = true)
{
    if ($fp = @fopen(INVOICE_FOLDER."/merged.tex", 'w'))
    {
        fwrite($fp, "\\documentclass[a4paper,10pt]{letter}\r\n");
        fwrite($fp, "\\usepackage{pdfpages}\r\n");
        fwrite($fp, "\\begin{document}\r\n");
        foreach ($pdfs as $pdf)
            fwrite($fp, "\\includepdf[pages=-]{".$pdf."}\r\n");
        fwrite($fp, "\\end{document}");
        fclose($fp);
    }
    else
        throw new Exception(l('error-file-not-created'));

    shell_exec('cd "'.PDFLATEX_FOLDER.'" & pdflatex "'.INVOICE_FOLDER.'/merged.tex" --quiet --output-directory="'.INVOICE_FOLDER.'"');
                
    // Remove temporary file output. Recommended for production.
    if ($removeTempOutput)
    {
        if (file_exists(INVOICE_FOLDER."/merged.log"))
            unlink(INVOICE_FOLDER."/merged.log");
        if (file_exists(INVOICE_FOLDER."/merged.aux"))
            unlink(INVOICE_FOLDER."/merged.aux");
    }
}

Nadeel is wel dat je LaTeX (Linux) of MiKTeX (Windows) op je server geïnstalleerd moet hebben.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 00:17
Het ligt een beetje aan de mogelijkheden die je hebt op de server. Je kunt met een tool als pdftk vanaf de commandline (onder andere) pdfs aan elkaar concatten. Als je de controle hebt over de server dan kun je daar zo een oplossing mee bouwen.

Heb je die mogelijkheid niet dan zou je in de source van dat tooltje kunnen kijken hoe het concatteneren in zijn werk gaat. Dat zou je dan kunnen namaken in PHP

Regeren is vooruitschuiven


  • Cartman!
  • Registratie: April 2000
  • Niet online
Zend_Pdf kan ook PDF's aan elkaar plakken, dat al bekeken? http://framework.zend.com/

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 21:46

Matis

Rubber Rocket

Cartman! schreef op donderdag 03 september 2009 @ 23:47:
Zend_Pdf kan ook PDF's aan elkaar plakken, dat al bekeken? http://framework.zend.com/
Je was me weer net voor. Ik heb met ZF meerdere malen PDF's gemaakt. Samengevoegd niet, maar (zoals Rekcor aangeeft) vanuit de database samengesteld.

ZF ftw :)

If money talks then I'm a mime
If time is money then I'm out of time


  • Tiemez
  • Registratie: December 2003
  • Laatst online: 24-10-2022
Rekcor schreef op donderdag 03 september 2009 @ 14:09:
Ik zou niet de PDF-output, maar de originele gegevens opslaan in de database. Vervolgens kun je die gegevens aan elkaar plakken en er een PDF van parsen. Dat lijkt me een stuk netter.

P.S. Op de site van FPDF kijken wil ook wel eens helpen, http://www.fpdf.org/ --> FAQ --> vraag 17 :)
FPDI, een extensie voor FPDF kan het wel.

http://www.setasign.de/products/pdf-php-solutions/fpdi/
http://www.setasign.de/pr...e-pdf-files-with-php.html

[ Voor 10% gewijzigd door Tiemez op 04-09-2009 00:00 ]

Pagina: 1