# PDF automatisiert über XML mit XSLT+XSL:FO erstellen



## KikiDieNieWasWeiss (29. Juli 2005)

Hallo zusammen,

ich möchte für Nutzer unserer Webseiten http://www.strassen4biker.de  ad hoc PDF Dateien erstellen oder über einen Generator erzeugen und zum Download anbieten. 

Da die Datenhaltung in Oracle 10 realisiert ist, habe ich die Möglichkeit über einen Select-Befehl Daten direkt im XML-Format zu erhalten und weiterzuverarbeiten. Jetzt habe ich die letzten Tage etwas gegoogled und einen Haufen Prozessoren und Tool gefunden, die bei der Erstellung und Transformation helfen (sollen). Unter anderem ein tool von Altova, was Xml2Pdf heiß. Kann man das automatisieren? Hat jemand Erfahrung oder einen Geheimtipp? Sollte doch lieber mit FOP von Apache gearbeitet werden?   

Mir ist aber irgend wie nicht wirklich klar, wie das genau ablaufen soll. Ich habe meinen XML-Stream und erstelle eine XSLT mit zusätzlichen XSL:FO-Anweisungen. Dann kommt da doch zuerst eine FO-Datei heraus, oder? Wie genau erhalte ich die und wie kann ich die dann abspeichern? Ich will es ja automatisieren und nicht für unsere mehr als 200 Strassenobjekte jedesmal den XMLSpy betätigen? Und daraus wird dann irgendwie die pdf-Datei Ein weiteres Problem habe ich noch, nämlich dass die Beispiele, welche ich gefunden habe, fast immer wohlgeformt, aber nicht valide sind. Bei meinen Versuchen eine FO-Datei per Hand zu erstellen habe ich dann spätestens in dem tool XML2Pdf Fehler erhalten, die ich in meiner Unwissenheit bezüglich dieser Materie nicht lösen konnte. *Hat jemand da mal ein Beispiel für mich und kann mir bitte jemand den genauen Ablauf erklären?*  :-( 

Die Webseiten selber sind mit ASP erstellt. Da habe ich ja glaube ich nur die Möglichkeit über den DOM-Parser XML mit XSLT zu koppeln. Mit .net ginge es glaube ich etwas einfacher... *säufts  

Kann mir jemand einen Tipp geben?
Gruß
Kiki


----------



## Portos (7. September 2005)

Hallo Kiki,

habe das schon mal für ein (NichtWeb-)System in VB realisiert.

Ablauf:

1) Aus Datenbank XML generieren,
2) XSLT (Saxon) drüberjagen.
3) FOP für die PDF-Generierung verwenden.

Aufruf:

java -jar saxon\saxon.jar -a -o temp.fo %1 >errorsax.txt  

java -cp fop\build\fop.jar;fop\lib\batik.jar;fop\lib\xalan-2.3.1.jar;fop\lib\xercesImpl-2.0.1.jar;fop\lib\xml-apis.jar;fop\lib\avalon-framework-cvs-20020315.jar;fop\lib\logkit-1.0.jar;fop\lib\jimi-1.0.jar org.apache.fop.apps.Fop temp.fo %2 >errorfop.txt 

Dabei ist %1 durch deine XML-Datei, %2 durch deine PDF-Datei zu ersetzen. temp.fo ist ein temporär erzeugtes File.

Ich hoffe, du kommst damit zurecht.

Tom


----------

