Fórum TQRPDFDocumentFilter trava o sistema no Windows 10 #590099
26/12/2017
0
Em algumas máquinas (apenas algumas) com windows 10 ao salvar o pdf usando TQRPDFDocumentFilter o sistema trava e fecha.
Código:
procedure TWReportPreview2.SaveToPdfPrint(Filename : string; UseDocFilter: Boolean);
PdfPrintDocumentFilter : TQRPDFDocumentFilter;
begin
PdfPrintDocumentFilter := TQRPDFDocumentFilter.Create(Filename);
PdfPrintDocumentFilter.AddFontMap( ''''''''WebDings:ZapfDingBats'''''''' );
PdfPrintDocumentFilter.TextOnTop := true;
PdfPrintDocumentFilter.LeftMargin := 0;
PdfPrintDocumentFilter.topMargin := 0;
PdfPrintDocumentFilter.CompressionOn := false;
PdfPrintDocumentFilter.Concatenating := true;
QRPreview.QRPrinter.ExportToFilter(PdfPrintDocumentFilter);
PdfPrintDocumentFilter.EndConcat;
PdfPrintDocumentFilter.Free;
end;
Alguém pode auxiliar? Utilizo delphi 2007 e QuickReport 4

Flávio
Curtir tópico
+ 0Post mais votado
24/08/2018
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);
Flávio

Gostei + 2
Mais Posts
23/05/2018
Ariel Barattucci
Gostei + 0
05/07/2018
Anderson Aquino
Caso tenham conseguido alguma solução favor compartilhar.
Gostei + 0
14/08/2018
Renan Santos
Gostei + 0
14/08/2018
Flávio
Fonte: http://forum.quickreport.co.uk/default.aspx?g=posts&t=41
Não estou conseguindo acessar meu fonte agora, quando conseguir posto para verificarem as diferenças.
Gostei + 1
24/08/2018
Marco Filho
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;
Abs
Gostei + 0
10/03/2020
Andre
Gostei + 0
02/06/2020
João Paulo
Obrigado!
Gostei + 0
11/09/2020
Sandro Dias
Tudo bem?
Faz tempo que deixei de programar. Mas agora preciso resolver esse problema em um sistema.
Fiz as alterações na Unit. Abri o PacKage QR4RunD7.dpk e compilei. Porem não resolveu o problema.
Como faz tempo eu não lembro se estou esquecendo de alguma coisa. É apenas esse procedimento de compilação ou preciso fazer mais algum processo?
Desde ja agradeço.
Gostei + 0
06/07/2021
Sergio
Flávio, você não faz ideia de quanto isso tá me ajudando. Ainda tenho um legado em Delphi 7.
Tá funcionando perfeitamente!
Muito obrigado.
Gostei + 1
06/07/2021
Flávio
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)