Em algumas máquinas (apenas algumas) com Windows 10 ao salvar o pdf usando TQRPDFDocumentFilter o sistema trava e fecha.
Solução :
Alterar no arquivo QRPDFFilt.pas as seguintes assinaturas :
De :
function cvtDWord(Buf: array of byte; P: Integer) : DWORD;
Para:
function cvtDWord(const Buf: array of byte; P: Integer): DWORD;
De :
function cvtInt(Buf: array of byte; P: Integer) : Integer;
Para:
function cvtInt(const Buf: array of byte; P: Integer): Integer;
Compila e corra para abraço …rsrsrs
Senão resolver com apenas essa mudança acima faça seguinte também:
NA UNIT QRPDFFILT.PAS, FAZER AS SEGUINTES ALTERAÇÕES
Junto com:
function cvtInt(Buf: array of byte; P: Integer) : Integer;
Criar:
function QRcvtInt(Buf: array of byte; P: Integer) : Integer;
var
pp, bb : integer;
begin
pp := p+1;
bb := (256*Buf[P]);
Result:= (Buf[pp]) + bb;
end;
Em
MakeTTFont
Criar
P: Integer;
Substituir
PDFFont.Metrics[K]:=cvtInt(Buff, Offset+(K*4));
por
PDFFont.Metrics[K] := qrcvtInt (Buff, Offset + (K * 4));//PDFFont.Metrics[K]:=cvtInt(Buff, Offset+(K*4));
Substituir
ntabs:=cvtInt(Buff, 4);
por
ntabs:= 256*Byte(Buff[P])+Byte(Buff[P+1]);//ntabs:=cvtInt(Buff, 4);
Substituir
toff:=cvtDWord(Buff, Offset+8);
tlen:=cvtDWord(Buff, Offset+12);
por
P := Offset+8;
toff:=256*256*256*Byte(Buff[P])+256*256*Byte(Buff[P+1])+256*Byte(Buff[P+2])+Byte(Buff[P+3]);//toff:=cvtDWord(Buff, Offset+8);
P := Offset+12;
tlen:=256*256*256*Byte(Buff[P])+256*256*Byte(Buff[P+1])+256*Byte(Buff[P+2])+Byte(Buff[P+3]);//tlen:=cvtDWord(Buff, Offset+12);
Substituir
PDFFont.NumMetrics:=cvtInt(Buff, toff+tlen-2);
por
PDFFont.NumMetrics:=cvtInt(Buff, toff+tlen-2);
OBS:A correção deve ser feita no arquivo qrpdffilt.pas