XSL-FO anzeigen oder Möglichkeit für anpassbare Designs

Alles rund um die Programmierung mit Qt
Antworten
jeb
Beiträge: 3
Registriert: 17. Oktober 2007 22:15
Wohnort: Schweiz
Kontaktdaten:

XSL-FO anzeigen oder Möglichkeit für anpassbare Designs

Beitrag von jeb »

Hallo!

Ich bin relativ neu in Qt und schreibe gerade an meinem ersten Programm. Bisher hab ich schon recht viel hingekriegt (das ganze Item/View-Konzept, XML In-/Export, ...). Doch nun stehe ich vor einem Problem. Ich habe Daten, die in einer XML-Datei gespeichert werden. Mein Ziel ist es, dass die Daten entweder ausdruckbar oder als PDF exportierbar sind. Wie ich gesehen habe, hat Qt den PDF-Export schon integriert. Fehlt also nur noch die Druckfunktion. Wichtig ist dabei, dass die Ausgabe der Daten individuell gestaltbar sein soll. Ich habe mich ein bisschen in der Welt von XML umgesehen und bin auf die Kombination XSLT/XSL-FO gestossen, die mir eigentlich recht gut gefällt, denn damit kann der Benutzer seine Ausgabe individuell gestalten. Nur mein Problem ist: Wie zeige ich XSL-FO in Qt an und drucke es nacher?
Fall jemand eine Idee hat, wie man das Problem auch einfacher lösen könnte, wäre das natürlich auch gut. Zuerst dachte ich an simples HTML, doch das sieht ja im Browser immer ein bisschen anders aus als beim Drucken.
Die Boardsuche hat mir nur das Projekt QExcel-XSLT gebracht, doch ich glaube, dass das nicht das ist, was ich suche, obwohl ich es nicht genau betrachtet habe.

Vielen Dank für die Hilfe,

jeb
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: XSL-FO anzeigen oder Möglichkeit für anpassbare Designs

Beitrag von patrik08 »

jeb hat geschrieben:Hallo!
Nur mein Problem ist: Wie zeige ich XSL-FO in Qt an und drucke es nacher?
Vielen Dank für die Hilfe,

jeb
XSL-FO ist einfach xml tag wie XHTML... den man wunderbar mit QTextDocument formatieren kann nach paragraph bilder tabelle liste ecc...
Das einzige problem man kann nicht gut Flussiger text und Layer basierter text ( fo:block-container wie die div vom html floating )zusammen im gui darstellen...

Wenn du Kontinuerliche text darstellen moechtest:
QTextBrowser
Bei Layer text wie Scribus oder Quark Express:
QGraphicsView

Man koennte alles im QGraphicsView zeigen .. aber dann must du sehr gut in matematik sein... um bei jeder sekunde zu rechnen welchen text auf seite 1,2,3 geht....

Ich habe Fop MiniScribus XSL-Fo geschrieben http://www.qt-apps.org/content/show.php ... tent=67552
der nur Layer text begreift... und falls doch etwas reinkommt (XSL-FO ) das nicht im layer ist mache ich ein neuen layer und schmeisse den text rein mit der seiten groessen...
Sehr gute resultate habe ich auch erziehlt von DatenBank zu XSL-FO und am ende zu pdf oder postscript ...

mit 2 class ....
https://wysiwyg-edit.svn.sourceforge.ne ... phandler.h
https://wysiwyg-edit.svn.sourceforge.ne ... _handler.h

zeichne ich das XSL-FO zu viele QTextDocument layer die man am ende wieder zu XSL-FO zusammenfuegen kann...
.........................
speack português italiano deutsch english castellà qt
jeb
Beiträge: 3
Registriert: 17. Oktober 2007 22:15
Wohnort: Schweiz
Kontaktdaten:

Beitrag von jeb »

Danke für den Beitrag. Wenn ich das richtig verstanden habe, so muss ich also den Viewer selbst programmieren. Das Problem ist, dass ich auf XSL-FO erst gerade beim Suchen einer Lösung meines Problems gestossen bin und mich damit nicht wirklich auskenne. Folglich weiss ich nicht genau, welche Bestandteile denn nun wichtig sind. Zudem sind meine Ferien am Montag wieder zuende und dann wird das Projekt wohl wieder liegen bleiben.
Der Benutzer muss das Dokument nicht in XSL-FO bearbeiten. Für die Dateneingabe steht im eine GUI zur Verfügung. XSL-FO wird nur für die Druckausgabe und PDF-Export verwendet, wovon ich eben eigentlich gerne eine Vorschau hätte.
Gibt es eine Möglichkeit, plattformübergreifend PDF oder PS darzustellen? Dann könnte ich die Daten zuerst durch fop schicken und dann anzeigen.

Nebenbei: Wie integrierst du fop in deine Programme? Rufst du es extern auf? Wie stellst du dabei sicher, dass der Benutzer fop installiert hat?

jeb
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

jeb hat geschrieben: Gibt es eine Möglichkeit, plattformübergreifend PDF oder PS darzustellen? Dann könnte ich die Daten zuerst durch fop schicken und dann anzeigen.
jeb
Wenn du nur Pdf oder PS zeigen moechtest... gibt es die cairo lib
den link findest du in der readme von http://xmlroff.org/
Nebenbei: Wie integrierst du fop in deine Programme? Rufst du es extern auf? Wie stellst du dabei sicher, dass der Benutzer fop installiert hat?
Das besag mir dass du das Programm http://www.qt-apps.org/content/show.php ... tent=67552
gar nicht installiert hast.../oder probiert ... ich brauche keinen externen Fop... QT hat bereits alles an board...

Der Fop ersatz macht der render von QGraphicsScene im programm selbst
http://doc.trolltech.com/qtopia4.2/qgra ... tml#render der geht zu pdf ps oder direkt zu drucker...

XSL-FO ist nur den file speicher format aus der QGraphicsScene und lesen format... das bedeutet das man die file danach auch woanders mit Fop rendern kann wie zum beispiel http://xmlgraphics.apache.org/fop/
aber ich brauche nicht umbedingt fop um pdf zu generieren...
Der lese und schreibe format koente auch html sein... kurz alles was zu QTextDocument gehen und kommen kann...

auch ein guter Fop ist http://xmlroff.org/ eine lib die vorhandene dokumente ins pdf oder rtf bringt.... aber kann nur auf linux leben...

Meine grund idee war um genaue dokumente zu erstellen da html nicht optimal ist ... und nebenbei kann man dort nichts rotieren weder text oder bild... was auch heute noch mit apache fop nicht geht...

Somit kann ich Serie-Briefe , vorlage , rechnungen , ecc... alles automatisieren ....
.........................
speack português italiano deutsch english castellà qt
jeb
Beiträge: 3
Registriert: 17. Oktober 2007 22:15
Wohnort: Schweiz
Kontaktdaten:

Beitrag von jeb »

Hi!

Hatte wohl etwas vorschnell geantwortet. Ich war etwas schockiert von dem Gedanken, dass ich einen Viewer selbst implementieren müsste. Habe mir dann, nachdem ich den Beitrag verfasst hatte, mir QGraphicsView mal genauer angeschaut. Der sieht super aus.
Bei deinem Programm hatte ich anfangs die Sourcedatei übersehen und anstelle dessen die Mac-Sourcen gezogen. Mit denen konnte ich natürlich nicht viel anfangen. In der Zwischenzeit hab ichs kompiliert. Werde später dann nochmals einen genaueren Blick darauf werfen. Vielen Dank für deine gute Hilfe soweit, ich melde mich bei Problemen nochmals.

jeb
Chris81T
Beiträge: 82
Registriert: 4. Mai 2008 00:06
Wohnort: Urbar

Beitrag von Chris81T »

@patrik08:

Hallo,

ich fand diesen Thread recht interessant und bin auch so auf das miniScribus gestoßen.

Vielleicht kannst du mir helfen:

Folgende Situation:
Ich habe:
- ein XML
- ein XSL ( erstellt von dem Programm XSL- Fast ** )

ich benötige:
- ein PDF zum drucken / E Mail Anhang
- event. ein PS

Problemstellung:
Bisher wurde dies mit dem Java Prog. Apache Fop 0.20.x gelöst, was auch funktioniert. Nur leider für meinen Fall dauert dies viel zu lange, da in kürzester Zeit viele XML mit bereitliegenden XSL Vorlagen transformiert werden müssen

Es gibt zwar Alternativen zum FOP, die auch mit XSL Fast kompatibel sind, aber sind kommerziell und eines davon ist auch ne JAVA App.

Nun zu meinen Fragen:
laut der Website steht, dass euer miniScribus 90 % kompaktibel zu FOP ist. Zu welcher Version denn? Der aktuellen 0.9.xxx oder zu der 0.2.xx.
Ich frage dies, weil ich folgendes gemacht habe:

Erst mit xalan aus XML + XSL ein XSL-FO gemacht (so wie FOP es im ersten Schritt machen würde) und dieses versucht mit miniScribus zu laden. Leider kommt nur eine Meldung [ das die Datei keine fo:block-container besitzt ] und es sind nur leere Seiten zu sehen. Die fo Datei sollte aber soweit richtig sein, da der fop daraus das passende PDF erzeugt.

(Muss dazu sagen, dass ich erst seit ein paar Tagen mit diesem Thema erstmals beschäftige)

2. Frage:
wie aufwendig war es für euch, die Transformation unabhängig von FOP zu implementieren? Also das aus dem fo ein Pdf wird?

Gruß Chris81T

---------------------------------------------------------------------------------

** : XSL Fast ist eine komerzielle Java SW, mit der man das XML passend formatieren kann, um es später zu drucken. Also so wie das miniScribus. Leider kann dieses in meinem Fall nicht durch eine andere SW ersetzt werden : ([/quote]
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Apache Fop sprich XSL-FO zu zeigen und bearbeiten ist nicht kompliziert
Die einzige bedingung ist ALLES von QTextdocument zu kennen und seine bug zu kennen und ev. sofort melden.

Der fop processor ist eben java und eigene font sind nicht immer selpverstandlich. Und ist leider langsam..

QT kann es deutlicher schneller ....

Zu zeit arbeite ich an eine neue uberarbeitung von Miniscribus mit PDF Bookmark http://code.google.com/p/fop-miniscribus/ Version 2
Die dann etwa so assieht:
Bild

Detail:
http://qtforum.de/forum/viewtopic.php?t=7172
Wenn jemand helfen will ist willkommen....


Interessant is auch http://www.qt-apps.org/content/show.php ... tent=82672 aber geht sicher laenger bis es drucken kann und richtig anzeigen...
.........................
speack português italiano deutsch english castellà qt
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Nun habe ich das ding fertig als beta und kann ueber 95% von alle muster fo dateien lesen vom Apache fop projekt sprich xsl-fo file
Auch den fo:bookmark-tree fo:bookmark , den alten fox bookmark koente man auch zum lesen bringen und zum neuen fo:bookmark exportieren....

Somit hast du den xsl-fo read/write editor
dazu noch OpenOffice file lesen

Info:
http://www.qt-apps.org/content/show.php ... tent=67552
sowie
http://code.google.com/p/fop-miniscribus/

Die bookmark werden in einem model verarbeitet.
http://fop-miniscribus.googlecode.com/s ... /bookmark/
Die trasformation von xsl-fo zu QTextDocument was mir fast 2 monaten
zeit geopfert hat:
http://fop-miniscribus.googlecode.com/s ... /foformat/ nicht einmal 200KB ist eigentlich wahnsinnig.







Bild
.........................
speack português italiano deutsch english castellà qt
Antworten