Drucken geht, PDF nicht?

Alles rund um die Programmierung mit Qt
Antworten
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Drucken geht, PDF nicht?

Beitrag von mikro »

Hi,
ich habe mir eine Druckvorschau gebastelt. Das Programm von dem aus ich das verwende bastelt irgendwas mit Datenbanken und die Vorgehensweise die ich wünsche ist, dass ich im Hauptprogramm eine Auswertung als Html erzeuge und dabei auch schon auf Seiten aufteile. Dann übergebe ich das Ganze als QStringList (1 String / Seite) an meine Vorschau und die druckt das oder erzeugt ein PDF davon. Keine Ahnung ob das sonderlich sinnvoll gelöst ist, vielleicht mag sich ja auch jemand dazu äussern. Für das eigentliche Problem reichts in der .cpp-Datei mal die Funktion output() anzuschauen:
In der Funktion output() wird ja wahlweise gedruckt bzw. ein PDF erzeugt. Ich bin das auch mal mit dem Debugger durchgegangen und habe nix entdecken können, was falsch aussah. Trotzdem funktioniert zwar das Drucken, nicht aber das PDF erzeugen. In alten Versionen wurde wenigstens noch ein halbwegs vernünftiges PDF erzeugt, bei dem nur die erste Seite jeweils eine Fehlermeldung ausgab.
Die jetzige Version ergibt ein PDF, dass zwar immerhin wie gewünscht 5 Seiten hat, die sind aber angeblich 0x0mm gross und enthalten nix.
Ich versteh ehrlich gesagt überhaupt nicht, was da anders sein soll als beim Drucken? Muss man für PDFs noch mehr Angaben machen?
[EDIT:]
Nachdem wohl keiner Lust hat, sich durch die angehängten Dateien zu quälen, anbei der entscheidende Bereich aus der output()-Funktion:

Code: Alles auswählen

QPrinter* printer = new QPrinter(QPrinter::HighResolution);
int from = 0;
int to = documentText.count();
printer->setOutputFormat(QPrinter::PdfFormat);
printer->setOutputFileName(QFileDialog::getSaveFileName(this,"Dateiname wählen",".","Adobe Portable Document Format (*.pdf)"));
printer->setFullPage(TRUE);
printer->setColorMode(QPrinter::Color);
printer->setOrientation(QPrinter::Portrait);
printer->setPageSize(QPrinter::A4);
printer->setCreator("WERTERmittlung");
printer->setPrintRange(QPrinter::AllPages);
for (int i=from; i<to; i++) {
	gotoPage(i);  // füllt textEdit mit Text der Seite
	textEdit->document()->print(printer);
	printer->newPage();
}
Wäre echt prima, wenn jemand dazu was einfallen würde, ich bin nämlich weiterhin ratlos
Dateianhänge
printPreviewDialog.cpp
.cpp-Datei
(7.45 KiB) 123-mal heruntergeladen
printPreviewDialog.h
Header Datei
(1.35 KiB) 124-mal heruntergeladen
printPreviewDialog.ui
Dialog
(7.19 KiB) 121-mal heruntergeladen
Whitefurrows
Beiträge: 138
Registriert: 1. Mai 2006 19:50

Beitrag von Whitefurrows »

Wäre toll wenn jemand dazu etwas sagen könnte. Hatte das Problem auch schon und konnte es nicht lösen. Hast du evtl. schon eine Lösung gefunden?
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

nein. habe zum Glück noch genug andere Probleme zu lösen. Bei dem fällt mir irgendwie gar nix ein. Wenigstens gut, dass sich mal jemand meldet - das holt den Thread wieder aus der Versenkung und erhöht die Chance, dass uns doch noch jemand aufklärt :)
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

Baue dir doch direkt eine druck vorschau zu PDF... zuerst das pdf machen...und dann ein qprocess zur pdf... oder mit dem java jar vom openoffice (im source von openoffice) machst du dir zig tumpnail bis zu 2000px breit (so viel wie seiten )vom pdf als png... und zeigst die png...
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

Du meinst ich erzeuge erst das PDF und zeige das dann im Acrobat Reader? naja ist nicht wirklich eine DruckVORSCHAU..
Ausserdem ist mein Problem ja das eigentliche erzeugen der PDF - das Vorschauen klappt ja.
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

mikro hat geschrieben: Ausserdem ist mein Problem ja das eigentliche erzeugen der PDF - das Vorschauen klappt ja.
Dieses lied kenne ich ausswendig ... sehr wenig leute sind mit qt4 pdf print zufrieden... es ist eben ein html file... dann lerne XSLT + fop... suche xsl-fo im google... und in diesem forum...

ein xslt file sieht so aus:
http://svn.sourceforge.net/viewcvs.cgi/ ... sql2fo.xsl
das xml file so:
http://svn.sourceforge.net/viewcvs.cgi/ ... .xml?rev=1
das resultat so:
http://svn.sourceforge.net/viewcvs.cgi/ ... sample.pdf

seit 2003 gibt es diesen standard du kannst pdf machen auf dem millimeter... selber probieren http://sourceforge.net/projects/qtexcel-xslt/ tabellen zu excel...
mikro
Beiträge: 60
Registriert: 19. April 2006 09:23
Wohnort: Erlangen
Kontaktdaten:

Beitrag von mikro »

ja, ich hatte auch schon vorher threads hier im Forum gelesen, dass das mit XSL-FO viel besser geht. Mir ist aber die milimetergenaue Ausgabe wurst. Das HTML-Subset das die Textedits verstehen tät mir reichen für meine Datenbankausgaben. Der Nachteil den ich an XSL-FO sehe, und weswegen ich das nicht verwendet hab. ist, dass ich damit eben nicht die Möglichkeit hätte eine integrierte Vorschau zu basteln, oder?
Sonst würde ich wohl sowieso gleich ncreport nehmen, aber was einfaches, eigenes wäre mir eigentlich lieber gewesen :(
Gibts da einen bekannten Bug mit der PDF-Ausgabe von Qt 4?
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

mikro hat geschrieben:ja,
Gibts da einen bekannten Bug mit der PDF-Ausgabe von Qt 4?
21 mit suche pdf bei http://www.trolltech.com/developer/task-tracker
patrik08
Beiträge: 746
Registriert: 27. Februar 2006 10:48
Wohnort: DE Freiburg

Beitrag von patrik08 »

http://www.trolltech.com/developer/task ... y&id=83932
http://www.trolltech.com/developer/task ... &id=103453

im grunde genommen begreife ich trolltech...
Window ist das einzige Os wo die druckvorschau nicht bereist im sistem integriert ist..... und sicher denken die ( window dev leuten sollen auf das naechste release warten... und eben das kaufen)

Elegant mach es Mac OSX [Aepfel+P] macht von allem ein pdf .... das programm benennt sich ja auch druckvorschau mit diesem programm kann man fast alles hinein draggen ... bilder texte xml html ... alles fas ein namen hat... Linux gnome e kde auch ... macht immer eine postcript datei...
Antworten