html2fpdf und CSS - 2 Welten...

html2fpdf und CSS - 2 Welten...

am 29.07.2006 22:11:09 von Werner Flamme

Hallo miteinander,

ich habe die ehrenvolle Aufgabe, fertig formatierten HTML-Code nach PDF
zu konvertieren - möglichst ohne dass auf dem Webserver zusätzliche
Software installiert wird. HTML2FPDF ist ja ein großer Schritt in die
richtige Richtung ;-) aber... Sagen wir mal vorsichtig, dass die
CSS-Interpretation von HTML2FPDF noch in den Kinderschuhen steckt. Da
müsste ich einiges manuell vornweg konvertieren und/oder interpretieren.

Im CSS-Code fürs Drucken findet sich für einige Feinheiten der beliebte
Eintrag "display:none;". Das ist etwas, was HTML2FPDF dann extra breit
druckt :-( Soll es aber nicht, das entsprechend gekennzeichnete Element
soll ja gar nicht im PDF erscheinen.

Ich habe mir das nun so vorgestellt, dass ich das CSS-File einlese und
so herausfinde, welche Sachen unsichtbar sein sollen. Das könnte ein
Array von Strings werden. Wie schaffe ich es nun, aus dem HTML-Code die
damit gekennzeichneten Elemente zu entfernen? Ich vermute mit
preg_replace(), aber mir fällt da kein Ausdruck ein, mit dem ich matchen
könnte - in einem Element kann ja seinerseits wieder ...
vorkommen, und class="mussweg" kann bei jedem Element vorkommen.

Könnte mir bitte jemand einen Denkanstoß verpassen? Nein, keine Schläge
auf den Hinterkopf ;-)

Freundlicher Gruß
Werner

Re: html2fpdf und CSS - 2 Welten...

am 30.07.2006 00:22:43 von Frank Schenk

Werner Flamme schrieb:
> Hallo miteinander,
>
> ich habe die ehrenvolle Aufgabe, fertig formatierten HTML-Code nach PDF
> zu konvertieren - möglichst ohne dass auf dem Webserver zusätzliche
> Software installiert wird. HTML2FPDF ist ja ein großer Schritt in die
> richtige Richtung ;-) aber... Sagen wir mal vorsichtig, dass die
> CSS-Interpretation von HTML2FPDF noch in den Kinderschuhen steckt. Da
> müsste ich einiges manuell vornweg konvertieren und/oder interpretieren.
>
....
> Könnte mir bitte jemand einen Denkanstoß verpassen? Nein, keine Schläge
> auf den Hinterkopf ;-)

Am einfachsten wird es wohl sein, 2 Versionen des HTML zu erzeugen. Bei
htmldoc arbeitet man an der Erkennung von CSS aber da fehlt auch noch
vieles.

Einfach ist es, wenn man mit Templates arbeitet.

gruß, Frank

Re: html2fpdf und CSS - 2 Welten...

am 30.07.2006 11:50:12 von Hendrik Pilz

Werner Flamme wrote:
> Hallo miteinander,
>
> ich habe die ehrenvolle Aufgabe, fertig formatierten HTML-Code nach PDF
> zu konvertieren - möglichst ohne dass auf dem Webserver zusätzliche
> Software installiert wird. HTML2FPDF ist ja ein großer Schritt in die
> richtige Richtung ;-) aber... Sagen wir mal vorsichtig, dass die
> CSS-Interpretation von HTML2FPDF noch in den Kinderschuhen steckt. Da
> müsste ich einiges manuell vornweg konvertieren und/oder interpretieren.
>
> Im CSS-Code fürs Drucken findet sich für einige Feinheiten der beliebte
> Eintrag "display:none;". Das ist etwas, was HTML2FPDF dann extra breit
> druckt :-( Soll es aber nicht, das entsprechend gekennzeichnete Element
> soll ja gar nicht im PDF erscheinen.
>
> Ich habe mir das nun so vorgestellt, dass ich das CSS-File einlese und
> so herausfinde, welche Sachen unsichtbar sein sollen. Das könnte ein
> Array von Strings werden. Wie schaffe ich es nun, aus dem HTML-Code die
> damit gekennzeichneten Elemente zu entfernen? Ich vermute mit
> preg_replace(), aber mir fällt da kein Ausdruck ein, mit dem ich matchen
> könnte - in einem Element kann ja seinerseits wieder ...
> vorkommen, und class="mussweg" kann bei jedem Element vorkommen.
>
> Könnte mir bitte jemand einen Denkanstoß verpassen? Nein, keine Schläge
> auf den Hinterkopf ;-)
>
Wieso lädst du die Seiten nicht im Browser deiner Wahl und druckst dort
mit einem PDF-Drucker? Das lässt sich dann bestimmt auch per
Batch/ClickOff automatisieren.

Gruß, Hendrik

Re: html2fpdf und CSS - 2 Welten...

am 30.07.2006 19:20:20 von Werner Flamme

Hendrik Pilz schrieb:
>>
> Wieso lädst du die Seiten nicht im Browser deiner Wahl und druckst dort
> mit einem PDF-Drucker? Das lässt sich dann bestimmt auch per
> Batch/ClickOff automatisieren.
>
> Gruß, Hendrik

Hendrik,

ich soll eine Funktion bereitstellen, ich soll nicht sagen, wie es am
einfachsten ist... ;-)

Und wir haben nur 400 Adobe-Lizenzen, also hat nicht jeder User einen
installierten Akrobaten. Und ein Tool von SourceForge, wie z. B.
pdfFactory - das im Gegensatz zum Akrobaten auch auf unseren Citrixen
einwandfrei läuft - ist politisch nicht durchzusetzen :-(

Freundlicher Gruß
Werner

Re: html2fpdf und CSS - 2 Welten...

am 30.07.2006 19:30:17 von Werner Flamme

Frank Schenk schrieb:
> Werner Flamme schrieb:
>> Hallo miteinander,
>>
>> ich habe die ehrenvolle Aufgabe, fertig formatierten HTML-Code nach
>> PDF zu konvertieren - möglichst ohne dass auf dem Webserver
>> zusätzliche Software installiert wird. HTML2FPDF ist ja ein großer
>> Schritt in die richtige Richtung ;-) aber... Sagen wir mal vorsichtig,
>> dass die CSS-Interpretation von HTML2FPDF noch in den Kinderschuhen
>> steckt. Da müsste ich einiges manuell vornweg konvertieren und/oder
>> interpretieren.
>>
> ...
>> Könnte mir bitte jemand einen Denkanstoß verpassen? Nein, keine
>> Schläge auf den Hinterkopf ;-)
>
> Am einfachsten wird es wohl sein, 2 Versionen des HTML zu erzeugen. Bei
> htmldoc arbeitet man an der Erkennung von CSS aber da fehlt auch noch
> vieles.
>
> Einfach ist es, wenn man mit Templates arbeitet.
>
> gruß, Frank

Hallo Frank,

2 Versionen von HTML erzeugen geht bei unserem CoMa in dem einen Fall,
in dem ich den Seiteninhalt aus einer SAP-Abfrage selbst zusammenbastle.
In den anderen Fällen, wenn nämlich die anderen etwa 100
Intranetbearbeiter Inhalt erstellen, geht das nicht, die nehmen CSS
(wenn man Glück hat) und fertig.

Und im DokuWiki, das mit Plugins arbeitet, bin ich schon froh, wenn ich
den geparsten Seiteninhalt bekomme. Ich müsste "im Hintergrund" die
Seite nochmal aufrufen (mit file_get_contents($myURL?print=1)) und das
Ergebnis an HTML2FPDF verfüttern - da ist wenigstens "display:none" weg.
Nachdem ich Hyperlinks, die auf "/irgendwas" verweisen (also ohne
"http://" am Anfang) ersetzt habe, und nach einem utf8_decode()... Mal
sehen, ob ich einen vernünftigen Server dazu bekomme. Der jetzige ist
mit 256 MB RAM nahezu am Ende...

Danke für den Denkanstoß!
Gruß
Werner

Re: html2fpdf und CSS - 2 Welten...

am 31.07.2006 10:46:34 von Ralf Zschemisch

Am Sat, 29 Jul 2006 22:11:09 +0200 schrieb Werner Flamme:

> ich habe die ehrenvolle Aufgabe, fertig formatierten HTML-Code nach PDF
> zu konvertieren - möglichst ohne dass auf dem Webserver zusätzliche
> Software installiert wird.

Wenn auf deinem Server AFPL / GhostScript installiert ist,
könntest du z.B.
http://www.tufat.com/script19.htm

verwenden.

hth

r23

--
http://www.myoos.de/fraktal/zoom.php

Re: html2fpdf und CSS - 2 Welten...

am 31.07.2006 12:03:58 von Werner Flamme

Ralf Zschemisch schrieb:
> Am Sat, 29 Jul 2006 22:11:09 +0200 schrieb Werner Flamme:
>
>> ich habe die ehrenvolle Aufgabe, fertig formatierten HTML-Code nach PDF
>> zu konvertieren - möglichst ohne dass auf dem Webserver zusätzliche
>> Software installiert wird.
>
> Wenn auf deinem Server AFPL / GhostScript installiert ist,
> könntest du z.B.
> http://www.tufat.com/script19.htm
>
> verwenden.
>
> hth
>
> r23
>

Hallo r23,

ja, wenn :-(. Aber ich kann das nicht veranlassen, und den Anstoß habe
ich schon ein paar Mal gegeben... Der Rest der "Required"- und
"Recommended"-Anforderungen ist ja gegeben (aber von der PDFLIB haben
wir nur eine Lizenz, es muss aber auf mehreren Webservern funktionieren).

Naja, ich mache jetzt erst mal 2 Wochen Urlaub, dann versuche mich mit
Glück mit dem Postscript nochmal. Hoffentlich läuft das auf Solaris 9
und 10 mit gleichen Effekten :-/

Freundlicher Gruß
Werner