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)