Thread system() richtig benutzen (6 answers)
Opened by cbxk1xg at 2013-02-16 16:59

cbxk1xg
 2013-02-16 16:59
#165834 #165834
User since
2003-10-20
496 Artikel
BenutzerIn
[default_avatar]
Hallo!

da ich bisher keine elegante und einfach Lösung gefunden habe PDFs aus HTML-Files inkl. CSS zu erstellen, habe ich mich für wkhtmltopdf entschieden. In der Shell läuft es auch super, aber ich muss es auch aus einem Perl-Skript aufrufen können, da ich es später als CGI benutzen will.

Wenn ich system() so benutze wie unten demonstriert, schreibt mir das Script nun keine Datei namens "test.pdf" sondern "vorlage.pdf". - Also so wie das Perl-Skript heisst, nur mit einer anderen Extension. Außerdem zerhaut es mir die im PDF die Formatierung und den Zeichensatz. Ich bekomme lustige Zeichen wie etwa äÃ1.

Ich denke es liegt am falschen Aufruf von system(). Ich habe es auch schon mit dieser Doku (http://www.perlhowto.com/executing_external_comman...) probiert, aber ich scheitere daran, dass ich hier ja eigentlich zwei Programme hintereinander starten muss. Einmal den virtuellen x-Server "xvfb" und dann den eigentlichen Konverter "wkhtmltopdf". Das lässt sich auch nicht umgehen, da ich die Konvertierung auf einem Webserver durchführen muss, auf dem natürlich kein normales X läuft.

Hat jemand ne Idee?

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;
use diagnostics;
use utf8;

$source = "/root/source.html";
$destination = "/root/test.pdf";

system("xvfb-run --server-args='-screen 0, 1024x768x24' wkhtmltopdf $source $destination");

View full thread system() richtig benutzen