delphiXE1
fastreport 4.10.5
想要实现静默导出设计好的报表为pdf文件,导出后发现pdf文件乱码,并提示如下错误:
网上查找了好多解决办法并尝试,都没有效果。
知道找到CSDN全欣提供的方法
用下面的替换文件frxExportPDF.pas中的TfrxPDFFont.GetFontName: AnsiString 中的同名函数即可。
将原代码:
function HexEncode7F(Str: WideString): AnsiString;
var
s: AnsiString;
Index, Len: Integer;
begin
s := ‘’;
Len := Length(Str);
Index := 0;
while Index < Len do
begin
Index := Index + 1;
if Byte(Str[Index]) > $7F then
s := s + ‘#’ + AnsiString(IntToHex(Byte(Str[Index]), 2))
else
s := s + AnsiString(Str[Index]);
end;
Result := s;
end;
替换为以下代码:
function HexEncode7F(Str: WideString): AnsiString;
var
s: AnsiString;
t: AnsiString;
Index, Len: Integer;
begin
s := ‘’;
t := Str;
Len := Length(t);
Index := 0;
while Index < Len do
begin
Index := Index + 1;
if Byte(t[Index]) > $7F then
s := s + ‘#’ + AnsiString(IntToHex(Byte(t[Index]), 2))
else
s := s + AnsiString(t[Index]);
end;
Result := s;
end;
另中文的字字体要用中文的字体,比如宋体就可以正常导出了。
改完之后要记得更新frxExportPDF.dcu有的时候原代码和用的地方不一样的