![]() |
QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Hallo,
ich betreue hier ein altes Programm (XE2 mit Quickreport). von QR habe ich die aktuelle Version 5.06 installiert. Nun habe ich leider Unterschiede zwischen dem Direktdruck und dem PDF-Export bei einer Rechnung. Unterschiede sind z.B. unterschiedliche Ränder (oben, unten) und daraus resultierend unterschiedliche Positionen der Elemente. Ich habe auch schon den PDF-Exportfilter von Synopse verwendet, da kann ich aber keinen Unterschied erkennen. Kennt jemand das Verhalten? Grüße |
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
so, etwas mehr Futter.
Die Unterschiede kommen vom verwendeten PDF-Betrachter. Verwende ich den AdobeReader auf Windows habe ich nach dem Druck deutliche Unterschiede (4-5mm) zum Direktdruck. Verwende ich auf meinem Hostsystem CentOS7 den Betrachter "Okular", dann passt der Ausdruck damit 100% zum Direktdruck. Sprich die unterschiedlichen Betrachter interpretieren unterschiedlich und drucken unterschiedlich. Sprich: PDF als Dokumentenspeicher ist für die Katz? Grüße |
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Schick den Bericht mal per Direktdruck an einen PDF-Drucker (deines Vertrauens) und vergleiche das Ergebnis in den beiden Readern.
Teilweise produzieren diese PDF-ExportFilter einfach nur Müll. |
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Zitat:
|
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Hallo,
ich habe das Gleiche Problem. In der Vorschau ist alles OK, beim Rendern werden wohl die Zeichenbreiten unterschiedlich berechnet. Der Direktdruck in den PDFCreator liefert ein sauberes Ergebnis. Dennoch stellt sich mir die Frage, wie kann ich auch über den PDF-Filter zu einem sauberen Ergebnis kommen ? |
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Es könnte sich um fehlende oder falsch angegebene Fonts handeln. Die Laufweiten der Buchstaben sind teilweise doch sehr unterschiedlich, auch wenn die Fonts eigentlich gleich aussehen (z.B. Arial <> Helvetica). Vielleicht kann man im Exportfilter etwas drehen, z.B. die Fonts 'embedden' oder anders/besser spezifizieren.
|
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Hallo,
danke für den Hinweis, ich nutze eigentl. Times New Roman (Umstellung auf Times oder Helvetica habe ich ausprobiert) für den Rechnungsdruck Mit fhNoEmbedding ist es schon besser, nur die Zeilen mit Fettdruck machen noch Probleme. fhAutoEmbed führt zu einer Exception 'Access Violation at 0x004c068f: read of adress...'
Delphi-Quellcode:
aPDF := TQRPDFDocumentFilter.Create(str_pdf_file);
aPDF.FontHandling := fhAutoEmbed; QRDruck.qckrp_Rechnung.ExportToFilter(aPDF); aPDF.Free; |
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Wenn Du den Source zu Quickreport hast - ich hab den Fehler gefunden :
Bei mir steht der Source unter : C:\Program Files (x86)\QuickReport\QR6-RAD-10-2-Tokyo\src Datei : qrpdffilt.pas ca Zeile 1830 : Der Fehler sind diese beiden Zeilen : for K := 0 to PDFFont.FileLength-1 do WriteByte(Byte(Buff[K])); // Denn der Stream "DocStream.WriteBuffer(B, 1) ist in finish.writebyte gar nicht offen // scheint mir alter Restcode zu sein Stattdessen, weil jetzt in eine stringlist geschrieben wird : setlength(buffB, length(Buff)); for K := 0 to PDFFont.FileLength-1 do BuffB[K] := Byte(Buff[K]); K := PDFFont.FileLength; DestEncoding := TEncoding.ASCII; Text := DestEncoding.GetString(BuffB,0,K); //, 0, 12); WriteStrNoCRLF(Text); Vllt geht's auch eleganter - jedenfalls Bytes in String packen und als String rausschreiben Außerdem hinzufügen (ca Zeile 1456 unter BUFF) : Buff : array of AnsiChar; ergänzen : BuffB : TBytes; DestEncoding : sysutils.TEncoding; Mein Code, um einen Barcodefont Code-128 zu embedden : aPDF := TQRPDFDocumentFilter.Create(pdftempname); aPDF.AddTTFont('Code-128'); // Mit fhautoembed wird das file riesengroß - fhNoEmbedding ist besser ! // dann nimmt er nur die geaddeten Fonts aPDF.FontHandling := TFonthandling.fhNoEmbedding; aPDF.TextOnTop := True; aPDF.SetMargins(2,2); aPDF.CompressionOn := True; aPDF.TextOnTop := True; aPDF.SetDocumentInfo('Vistalog','Vistalog','Ablief ernachweis','Abliefernachweis'); report.ExportToFilter(aPDF); Vielleicht hilfts ja irgendwann mal Jemandem ;o) |
AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Die erste Lösung war noch nicht ganz funktional.
Mit diesen Änderungen läuft es aber : .. BuffB : TBytes; DestEncoding : sysutils.TEncoding; AText : string; //<<<<<<<<<<<<<<<<<<< .. K := PDFFont.FileLength; DestEncoding := TEncoding.ANSI; AText := DestEncoding.GetString(BuffB,0,K); WriteStrNoCRLF(AText); Änderungen : ANSI-Encoding statt ASCII AText statt Text, weil text nicht als String genutzt wird (Warum auch immer es zunächst lief..) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz