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();
}