系统相关
首页 > 系统相关> > lazarus linux下使用powerPDF控件中文乱码的解决方法

lazarus linux下使用powerPDF控件中文乱码的解决方法

作者:互联网

      lazarus linux下使用powerPDF中文乱码使用网上的修改方法还是存在出现乱码问题,经跟踪powerpdf源码,除启用PRreort.pas {$DEFINE USE_GBFONTS}外,还要修改pdfdoc.pas TPdfCanvas.ShowText(const s: string),并添加LConvEncoding单元,使用UTF8ToCP936将UTF8转为CP936。
   修改后的powerpdf在windows和linux都可以正确保存含中文的pdf,不过还存在非中文字符的字间距有点大的问题。

pdfdoc.pas:
procedure TPdfCanvas.ShowText(const s: string); var FString: string; begin if _HasMultiByteString(s) then FString := '<' + _StrToHex(s) + '>'; else FString := '(' + _EscapeText(s) + ')'; WriteString(FString + ' Tj'#10); end;

改为:

uses LConvEncoding;//添加这个单元

procedure TPdfCanvas.ShowText(const s: string); var FString: string; begin FString := '<' + _StrToHex(LConvEncoding.UTF8ToCP936(s,true)) + '>'; WriteString(FString + ' Tj'#10); end;

 

标签:控件,powerPDF,const,string,乱码,ShowText,linux,FString
来源: https://www.cnblogs.com/qiufeng2014/p/16095063.html