Dies funktioniert soweit problemlos, egal ob direkt auf einen Drucker ausgedruckt wird oder eine PDF-Datei mittels setOutputFormat(QPrinter::PdfFormat) erzeugt wird.
Ein Druckproblem tritt allerdings dann auf, wenn unter Windows die Anzeige von 100 auf 150 % eingestellt wird.
Dies hat zur Folge, dass im Ausdruck die HTML-Seiten viel kleiner erscheinen.
Für die Ausgabe in eine PDF-Datei konnte ich das Problem inzwischen beheben, in dem ich folgendes Attribut setze:
QApplication::setAttribute(Qt::AA_Use96Dpi);
Leider besteht das Problem für den Ausdruck auf einen Drucker aber immer noch.
Wenn ich in diesem Fall (Anzeige = 150%) den Skalierungsfaktor für eine Din A4 Seite von 1.0 auf 1.5 setze, sieht es auch wieder gut aus. Allerdings ist es mir noch nicht gelungen die eingestellte Windows-Anzeige abzufragen.
Hier mein relevanter Code:
Code: Alles auswählen
QPrinter printer;
QTextDocument txtDoc;
QPainter painter;
printer.setFullPage(true);
painter.begin(&printer);
painter.scale(scale, scale); // für A4 scale = 1.0
painter.translate(printer.paperRect().x(), printer.paperRect().y());
txtDoc.setHtml(css + html); // css und html sind vom Typ QString und enthält den entsprechenden Code und Inhalt
txtDoc.drawContents(&painter);
painter.end();
Am einfachsten wäre natürlich, wenn nur ein bestimmtes Attribut gesetzt werden muss.
Es wäre mir aber auch schon eine große Hilfe, wenn ich wüsste wie ich die eingestellte Windows-Anzeige abfragen kann.
Vielen Dank.