Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Werkzeuge (https://www.delphipraxis.net/63-sonstige-werkzeuge/)
-   -   QuickReport: Unterschied zwischen Direktdruck und PDF-Export (https://www.delphipraxis.net/184911-quickreport-unterschied-zwischen-direktdruck-und-pdf-export.html)

Lemmy 29. Apr 2015 21:38

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

Lemmy 8. Mai 2015 15:24

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

Sir Rufo 8. Mai 2015 17:21

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.

Lemmy 8. Mai 2015 18:01

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export
 
Zitat:

Zitat von Sir Rufo (Beitrag 1300753)
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.

Habe ich auch gemacht: PDF24 Creator: AUch hier wenn ich das mit Adobe ausdrucken lasse kommt was anderes raus als mit dem Linux-Viewer (das wieder zum Direktdruck passt). Und auch beim QR-PDFExport kann ich den Synopse-PDF Export verwenden: das selbe Spiel. Adobe interpretiert hier Positionen / Ränder anders als die anderen.. Vielleicht liegts auch an der PDF Version...

waldforest 2. Aug 2015 20:27

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 ?

Dejan Vu 3. Aug 2015 07:45

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.

waldforest 3. Aug 2015 08:58

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;

Bubbleman 26. Apr 2019 23:06

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)

Bubbleman 27. Apr 2019 18:30

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 00:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz