Hallo,
ich grübel gerade an dem Problem, wie ich ein QTextDocument ab einer festen Position auf einem QPainter, das auf einem QPrinter basiert, ausgeben kann. Um es genauer zu erklären:
Ich will ein Dokument drucken, bei dem z.B. die oberen 10 cm und die unteren 5 cm immer den gleichen Text beinhalten, oder auch Grafiken.
Dazwischen soll dann formatierter Text wie ich ihn in einem QTextDocument erzeugt habe gedruckt werden, und der Text kann sich durchaus auch mal über mehrere Seiten erstrecken. Bisher habe ich da leider keine Lösung für gefunden.
Hat da jemand eine Idee?
qtextdocument drucken
Ok, dazu nochmal zwei Gedankengänge, die ich hatte wie das ganze Funktionieren könnte:
1. Methode: Ich erstelle alles in einem QTextDocument. Dazu müßte ich aber dem Dokument die feste Größe DIN A4 geben, und ich weiss nicht wie das geht. Davon abgesehen müßte ich Elemente Milimeter-Genau platzieren können, was aber mit Hilfe von HTML möglich sein sollte - wenn auch etwas aufwändig. Bliebe also vor allem das Problem, die Größe festzulegen.
2. Ich benutze ganz Klassisch die Methode QPrinter + QPainter. Nur habe ich bisher nur eine Methode gefunden, den reinen Text ohne Formatierungen aus dem QTextDocument auszulesen und auf dem QPainter zu platzieren. Weiss da jemand eine Möglichkeit, wie ich die Sache formatiert ausgeben kann?
1. Methode: Ich erstelle alles in einem QTextDocument. Dazu müßte ich aber dem Dokument die feste Größe DIN A4 geben, und ich weiss nicht wie das geht. Davon abgesehen müßte ich Elemente Milimeter-Genau platzieren können, was aber mit Hilfe von HTML möglich sein sollte - wenn auch etwas aufwändig. Bliebe also vor allem das Problem, die Größe festzulegen.
2. Ich benutze ganz Klassisch die Methode QPrinter + QPainter. Nur habe ich bisher nur eine Methode gefunden, den reinen Text ohne Formatierungen aus dem QTextDocument auszulesen und auf dem QPainter zu platzieren. Weiss da jemand eine Möglichkeit, wie ich die Sache formatiert ausgeben kann?
Da das Problem leider noch immer aktuell ist, hier mal etwas das ich ausprobiert habe:
Es gibt in Qt die schöne Klasse QWebView. Diese habe ich versucht, folgendermaßen einzubinden:
Dabei sind aber gleich zwei Probleme aufgetreten:
1. die Schriftgröße ist viel zu klein. Das ließe sich noch mit setZoomFactor lösen.
2. Das gerenderte Objekt ist immer in einem quadratischen Ausschnitt, der nicht über die volle Seitenbreite geht. Und ich habe einfach noch keine Möglichkeit gefunden, wie ich die Breite einstellen kann.
Hat jemand eine Idee wie ich das korrekt rendern kann?
Gruß
Torsten
Es gibt in Qt die schöne Klasse QWebView. Diese habe ich versucht, folgendermaßen einzubinden:
Code: Alles auswählen
QWebView dokument;
const QPoint start(x*mmx, y*mmy);
br = dokument.rect();
dokument.setHtml(data->prefix);
dokument.render(&device, start);
1. die Schriftgröße ist viel zu klein. Das ließe sich noch mit setZoomFactor lösen.
2. Das gerenderte Objekt ist immer in einem quadratischen Ausschnitt, der nicht über die volle Seitenbreite geht. Und ich habe einfach noch keine Möglichkeit gefunden, wie ich die Breite einstellen kann.
Hat jemand eine Idee wie ich das korrekt rendern kann?
Gruß
Torsten