Delphi 尝试使用SynPDF将带有unicode文本的报表导出为pdf,会导致文本混淆
SynPDF已经修复了一些unicode问题,但并非所有问题都得到了解决。 以下是使用Syny SynPDF将快速报告导出为PDF的streight forward代码:Delphi 尝试使用SynPDF将带有unicode文本的报表导出为pdf,会导致文本混淆,delphi,pdf-generation,hebrew,quickreports,uniscribe,Delphi,Pdf Generation,Hebrew,Quickreports,Uniscribe,SynPDF已经修复了一些unicode问题,但并非所有问题都得到了解决。 以下是使用Syny SynPDF将快速报告导出为PDF的streight forward代码: procedure TForm1.CreatePdf(QuickRep: TCustomQuickRep; const aFileName: TFileName); var Pdf: TPdfDocument; aMeta: TMetaFile; i: integer; begin Pdf := TPdfDocument.
procedure TForm1.CreatePdf(QuickRep: TCustomQuickRep; const aFileName: TFileName);
var
Pdf: TPdfDocument;
aMeta: TMetaFile;
i: integer;
begin
Pdf := TPdfDocument.Create;
Pdf.UseUniscribe := True;
try
Pdf.DefaultPaperSize := psA4;
QuickRep.Prepare;
for i := 1 to QuickRep.QRPrinter.PageCount do begin
Pdf.AddPage;
aMeta := QuickRep.QRPrinter.GetPage(i);
try
// draw the page content
Pdf.Canvas.RenderMetaFile(aMeta,1,0,0);
finally
aMeta.Free;
end;
end;
Pdf.SaveToFile(aFileName);
finally
Pdf.free;
end;
end;
这是一个带有标签的报表设计器的屏幕截图,
有希伯来语字符串,可以翻译为:
电话:03-555
这在运行时按原样显示,并打印相同的内容。
然而,使用SynPDF,结果如下:
有人知道对此可以做些什么吗
我之所以使用SynPDF是因为它是免费的
因为它会呈现图元文件中的文本
与其只是拍照
这意味着我可以通过我的pdf文件获得高质量的文本
但我不会排除其他组件,因为它们
我有办法解决这个问题
谢谢。您使用的是来自的最新版本吗?
TPdfEnum.TextOut
方法(第9682行)中定义的Canvas.RightToLeftText
属性值是什么?我使用的是我认为最新的版本,即1.18或1.7(我不清楚)。几天前,我从源网站下载了它,尽管这行代码显示了一些完全不同的东西。当我将这一行添加到我的代码:Pdf.Canvas.RightToLeftText:=True;,它什么也没做。好的,只是再次更新。第9682行显示了正确的code.Canvas.RightToLeftText:=(R.emrtext.fooptions和ETO_RTLREADING)0;我需要换吗?我仍然以错误的顺序获取文本。请尝试强制Canvas.RightToLeftText:=true或false