Seite 1 von 1
Qualität bei Geschäftspapieren
Verfasst: 30. September 2008 12:14
von NoRulez
Hey @all,
kennt jemand eine Trick oder sonstiges um professionelle Geschäftspapiere mit QT4 zu erzeugen?
Ich arbeite an einem kleinen Beispiel programm um Rechnungen zu Drucken und zu Speichern (PDF).
Jedoch ist die Qualität nicht wirklich so das ich Sie einem Kunden geben möchte.
Bisher speichere ich die Kundedaten usw. in einer Datenbank und beim generieren erstelle ich eine XML und lasse darauf libxslt darüber laufen um eine HTML Ausgabe zu generieren, diese lade ich dann in ein QTextDocument bzw. in ein QWebView.
Beides habe ich schon ausgedruckt und als PDF gespeichert, jedoch ist die Qualität echt schlecht.
Wäre für jede Hilfe sehr dankbar
Lg NoRulez
Verfasst: 30. September 2008 20:28
von CaptnChaos
Zeichne direkt in eine PDF.
Das macht man per QPrinter. Ein Beispiel gibts bei den Demos.
Re: Qualität bei Geschäftspapieren
Verfasst: 1. Oktober 2008 10:35
von patrik08
NoRulez hat geschrieben:Hey @all,
Bisher speichere ich die Kundedaten usw. in einer Datenbank und beim generieren erstelle ich eine XML und lasse darauf libxslt darüber laufen um eine HTML Ausgabe zu generieren, diese lade ich dann in ein
Wäre für jede Hilfe sehr dankbar
Lg NoRulez
QT kann xslt du brauchst keine lib...
http://englich.wordpress.com/2008/09/10/xsl-t-and-qt/
Code: Alles auswählen
int main(int argc, char *argv[]) {
QApplication a( argc, argv );
qDebug() << "### init main void Extract, Transform ";
QDateTime timer1( QDateTime::currentDateTime() );
const QString localoutfile = "outresult.html";
StreamBuf *buf = new StreamBuf();
QXmlQuery xquery(QXmlQuery::XSLT20);
xquery.setFocus(QUrl("http://fop-miniscribus.googlecode.com/svn/trunk/doc/Xsltqt5/data.xml"));
xquery.setQuery(QUrl("http://fop-miniscribus.googlecode.com/svn/trunk/doc/Xsltqt5/style.xsl"));
xquery.evaluateTo(buf->device());
QTextEdit t;
t.show();
t.setPlainText ( const QString & text );
a.connect( &a, SIGNAL( lastWindowClosed() ), &a, SLOT( quit() ) );
return a.exec();
};
//// read dir http://fop-miniscribus.googlecode.com/svn/trunk/doc/Xsltqt5/
HTML ist aber ein aber einen rollercaster weg auf & ab..
propriere mal xsl-fo
http://de.wikipedia.org/wiki/Extensible ... ng_Objects
1 ist xml ->
http://fop-miniscribus.googlecode.com/s ... sample2.fo
2 ist pdf ->
http://fop-miniscribus.googlecode.com/f ... twrite.pdf
was aber auch rtf -tif oder ODF OpenOffice werden kann OpenDocument format.
XSLT is im qt 4.5 enthalten und dazu ist QTextDocument 200% schneller da die paintdevice neu geschrieben ist.
Um den unterchied zu beobachten lade:
1 -
http://fop-miniscribus.googlecode.com/f ... dit4.5.exe
2 -
http://fop-miniscribus.googlecode.com/f ... dit4.1.exe
und lade mit beiden programme demo.html oder demo.odt und achte auf die lade zeit...
wie installieren?:
http://code.google.com/p/fop-miniscribu ... _Trolltech
Verfasst: 1. Oktober 2008 11:45
von NoRulez
Kennst Du bezüglich XSL-FO auch eine C/C++ Libary, den soweit ich gelesen habe ist FOP eine Java Programm. Würde gerne eine konvertierung ähnlich wie Du im Beispiel auch mit XSL-FO durchführen können.
LG
NoRulez
Verfasst: 1. Oktober 2008 12:27
von patrik08
Am Fop ist nichts falsch man kan ihm auch mit einem installer setzen..
Dann gibt es noch
http://xmlroff.org/ ist eine lib
Sowie einen XSLT den man xsl-fo file im OpenOffice laden kann
Und Ein Plug-in fuer
http://www.abisource.com/ der xsl-fo lesen und schreiben kann ( doch ist die formatierung sehr schlecht )
Rendern bei -> Software:
http://de.wikipedia.org/wiki/Extensible ... ng_Objects
bei link ist auch MiniScribus vorhanden.
alle Kommerziell ausser Apache Fop java
Wer auch rendern kann ist MiniScribus version 1 print + pdf
bei MiniScribus version 2 kann man einen printPreview einsetzen
Beide painten in Graphics View
Also die einzige freien XSL-FO Wysiwyg-Editor sind
1 -
http://code.google.com/p/fop-miniscribus/
2 -
http://www.qt-apps.org/content/show.php ... tent=82672
Kommerziel gibt es
http://www.antennahouse.com/ der gut ist..
Installiere
http://fop-miniscribus.googlecode.com/f ... _1.0.3.exe und schaue auf den source insgesamt etwa 2500 download bei qt-apps , sf.net und google code sowie hotscripts aber version 1 kann keine bookmark machen, nur version 2 + Apache fop java
Verfasst: 1. Oktober 2008 12:48
von NoRulez
Die Links habe ich mir schon durchgesehen, jedoch verstehe ich glaube ich etwas grundsätzlich nicht oder ich bin noch zu sehr im XSLT.
Simples Beispiel für XSLT:
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="utf-8" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
<xsl:decimal-format name="european" decimal-separator=',' grouping-separator='.' />
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<table border="0" align="center" cellpadding="0" cellspacing="0" width="100%">
<tr height="57">
<td><xsl:value-of select="invoice/company/company_name"/></td>
</tr>
<tr height="57">
<td><xsl:value-of select="invoice/company/street"/></td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Wie würde sowas in XSL-FO aussehen?
Wie gesagt ich habe mir auch die Beispiele zu XSL-FO angesehen, jedoch wie benutzt man daten aus einem XML File?
Benötigt man jetzt nur mehr data.xml und data.fo oder auch eine data.xsl?
Zugegeben bei XSLT war es etwas einfacher
Hoffe Du kannst mir ein bisschen helfen/unter die Arme greifen.
Vielen Dank im Voraus
LG NoRulez
Verfasst: 1. Oktober 2008 13:14
von patrik08
In meinem 2 qt programm
http://sourceforge.net/search/?type_of_ ... rds=qexcel vor 2 jahren geschrieben ist so ein beispiel drinnen... der QT code nicht gut lesbar aber es funktioniert 1a.
https://qtexcel-xslt.svn.sourceforge.ne ... lt/qexcel/
tabelle zu excel oder sqlite zu excel ist auch drinn:
http://qtexcel-xslt.sourceforge.net/con ... el2003.xsl
http://qtexcel-xslt.sourceforge.net/con ... 2excel.xsl
xml zu xsl-fo fast wie in deinem bespiel:
http://qtexcel-xslt.sourceforge.net/con ... sql2fo.xsl
http://qtexcel-xslt.sourceforge.net/converter/ ***
eine tabelle
Code: Alles auswählen
<fo:table>
<fo:table-column column-width="33%" />
<fo:table-column column-width="33%" />
<fo:table-column column-width="33%" />
<fo:table-body>
<fo:table-row>
<fo:table-cell>
<fo:block color="rgb(0,0,0,255)" font-size="8pt" >
0-1</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block color="rgb(0,0,0,255)" font-size="8pt" >
0-2</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block margin-bottom="12pt" margin-top="12pt" color="rgb(0,0,0,255)" font-size="8pt" >
0-3</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block color="rgb(0,0,0,255)" font-size="8pt" >
1-1</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block color="rgb(0,0,0,255)" font-size="8pt" >
1-2</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block margin-bottom="12pt" margin-top="12pt" color="rgb(0,0,0,255)" font-size="8pt" >
1-3</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block color="rgb(0,0,0,255)" font-size="8pt" >
2-1</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block color="rgb(0,0,0,255)" font-size="8pt" >
2-2</fo:block>
</fo:table-cell>
<fo:table-cell>
<fo:block margin-bottom="12pt" margin-top="12pt" color="rgb(0,0,0,255)" font-size="8pt" >
2-3</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>