Nach Änderung der Windows-Anzeige auf 150% werden Seiteninhalte viel kleiner ausgedruckt
Verfasst: 19. Februar 2018 13:42
Ich erstelle mit Qt HTML-Seiten und drucke diese dann mit Hilfe von QTextDocument aus.
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:
Hat jemand eine Idee, was ich tun kann, damit auch auf dem Drucker korrekt ausgedruckt wird (PDF ist ok)?
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.
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.