AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge QuickReport: Unterschied zwischen Direktdruck und PDF-Export
Thema durchsuchen
Ansicht
Themen-Optionen

QuickReport: Unterschied zwischen Direktdruck und PDF-Export

Ein Thema von Lemmy · begonnen am 29. Apr 2015 · letzter Beitrag vom 27. Apr 2019
Antwort Antwort
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#1

QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 29. Apr 2015, 21:38
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
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 8. Mai 2015, 15:24
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
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 8. Mai 2015, 17:21
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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.380 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 8. Mai 2015, 18:01
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...
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 2. Aug 2015, 20:27
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 ?
mfg wf
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 3. Aug 2015, 07:45
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.
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#7

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 3. Aug 2015, 08:58
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;
mfg wf
  Mit Zitat antworten Zitat
Bubbleman

Registriert seit: 26. Apr 2019
2 Beiträge
 
#8

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 26. Apr 2019, 23:06
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)
  Mit Zitat antworten Zitat
Bubbleman

Registriert seit: 26. Apr 2019
2 Beiträge
 
#9

AW: QuickReport: Unterschied zwischen Direktdruck und PDF-Export

  Alt 27. Apr 2019, 18:30
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..)

Geändert von Bubbleman (28. Apr 2019 um 04:58 Uhr) Grund: Korrektur
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:23 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