Qualität bei Geschäftspapieren

Alles rund um die Programmierung mit Qt
Antworten
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Qualität bei Geschäftspapieren

Beitrag 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
CaptnChaos
Beiträge: 605
Registriert: 28. Juni 2007 15:01
Kontaktdaten:

Beitrag von CaptnChaos »

Zeichne direkt in eine PDF.
Das macht man per QPrinter. Ein Beispiel gibts bei den Demos.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Re: Qualität bei Geschäftspapieren

Beitrag 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
.........................
speack português italiano deutsch english castellà qt
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag 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
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag 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
Zuletzt geändert von patrik08 am 1. Oktober 2008 12:53, insgesamt 1-mal geändert.
.........................
speack português italiano deutsch english castellà qt
NoRulez
Beiträge: 208
Registriert: 19. Juni 2007 15:43

Beitrag 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
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag 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>

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