Wie erstellt man aus einer PHP Datei mittels

… FPDF ein PDF?

Hallo alle zusammen,

ich verwende zur dynamischen und datenbankgestüzten Erzeugung von PDF-Dateien FPDF. Das funktioniert auch sehr gut.

Ich möchte jetzt ebenfalls mit FPDF oder FPDI eine PDF-Datei aus einem php-file erzeugen, und zwar so, wie dieses im Browser dargestellt wird. Dabei sollten allerdings Links und Bilder erhalten bleiben. D.h. eine Art Screenshot würde mir nicht helfen!

Ich habe diesbezüglich schon einige Zeit über zich verschiedenen Dokumentationen gesessen und (aus meiner Sicht) nichts passendes gefunden.

Hat das schon mal jemand gemacht oder weiß jemand wie das funktioniert?

Vielen Dank schon mal im Voraus

Nobody

Ich möchte jetzt ebenfalls mit FPDF oder FPDI eine PDF-Datei
aus einem php-file erzeugen, und zwar so, wie dieses im
Browser dargestellt wird. Dabei sollten allerdings Links und
Bilder erhalten bleiben.

du willst also nicht aus php ein pdf erzeugen, sondern aus html.

tcpf http://www.tcpdf.org/ macht sowas

weiter unten XHTML + CSS:
http://www.tcpdf.org/examples/example_061.phps

Hallo

Ich möchte jetzt ebenfalls mit FPDF oder FPDI eine PDF-Datei
aus einem php-file erzeugen, und zwar so, wie dieses im
Browser dargestellt wird. Dabei sollten allerdings Links und
Bilder erhalten bleiben. D.h. eine Art Screenshot würde mir
nicht helfen!

Da …

Ich habe diesbezüglich schon einige Zeit über zich
verschiedenen Dokumentationen gesessen und (aus meiner Sicht)
nichts passendes gefunden.

gibt es meines Wissens nach nur eine einzige
freie und auch zuverlässige Möglichkeit, und zwar
dann, wenn Du CGI-Programme auf dem Server ausführen
darfst.

Das aus dem Qt-Webkit gebaute wkhtmltopdf (http://code.google.com/p/wkhtmltopdf/ )
würde über einen Link auf der Seite genau diese Seite
nochmal aufrufen und als pdf zurückliefern.

Ich mache das gelegentlich auch (aus Perl) und es
funktioniert sehr gut. Das Programm wkhtmltopdf muß
dazu in einem Verzeichnis liegen, in welchem der
Webserver Programme starten darf (z.B. /srv/web/cgi-bin).

Bei mir liegt das Programm unter /usr/local/bin, ich
hänge mal das Perl-Script an, das sollte sich weit-
gehend nach PHP übernehmen lassen:

[machpdf.pl]

use strict;
use warnings;
use Encode;
 # Access mod\_perl rquest object and
 my $r = shift(@\_); # get output filename from path info
(my $path\_info = $r-\>path\_info()) =~ s{^/}{};
 my $hostname = $r-\>hostname();

 my $prog = '/usr/local/bin/wkhtmltopdf';
 my @args = (
 '-q',
 '--default-header',
 '-B', '20mm',
 '-T', '20mm',
 '-R', '20mm',
 '-L', '20mm',
 'cover',
 "http://$hostname/meine/webseite.html",
 '-'
 );

 use Config;
 use Apache2::SubProcess ();
 use constant PERLIO\_IS\_ENABLED =\> $Config{useperlio};

 # run program through pipe (within mod\_perl, otherwise it's simple)
 my ($in\_fh, $out\_fh, $err\_fh) = $r-\>spawn\_proc\_prog($prog, \@args);
 close $in\_fh;

 my $pdf = undef;
 if( PERLIO\_IS\_ENABLED || IO::Select-\>new($out\_fh)-\>can\_read(10) ) {
 local $/;
 $pdf = ; # read back generated pdf
 }
 close $out\_fh;

 if(defined $pdf) {
 binmode(STDOUT); #
 print qq{Content-type: application/pdf\nContent-Disposition: inline; filename="$path\_info"\n\n};
 print $pdf;
 }
 else {
 print qq{Content-type: text/plain\n\n};
 print qq{\nPDF creation failed (mod\_perl on $hostname). Please contact webmaster!\n};
 }

Aufruf mit simplem Link + „PATH_INFO“ (/ausgabedatei.pdf):

a href="/perl/machpdf.pl/ausgabedatei.pdf"\>
 img src="/images/pdficon.gif" /&gt:stuck\_out\_tongue\_winking\_eye:DF-Datei/a\>

auf Deiner Seite, die Du ausgeben willst.

Dasselbe in PHP halte ich für trivial, sobald PHP auf
dem Server sowas wie exec() oder spawn() machen darf.
Vielleicht bastle ich’s mal an einem trüben Winterabend :wink:

Grüße

CMБ