Einzelnen Beitrag anzeigen

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