在Delphi下操作PDF文件的控件中我已经提到,iSEDQuickPDF是一个功能非常强的PDF操作控件。在使用这个控件的时候遇到的一个最大问题就是如何输出中文。经过摸索终于找到了解决的办法,与大家分享一下。
1、正文中带中文的情况
在iSEDQuickPDF的FAQ中介绍了一种方法,就是使用AddSubsettedFont函数,例如:
如果直接使用NewOutline函数添加中文书签,则最后显示的一定是乱码。要先使用ToPDFUnicode将中文转换为PDF中的Unicode格式才行,如:
1、正文中带中文的情况
在iSEDQuickPDF的FAQ中介绍了一种方法,就是使用AddSubsettedFont函数,例如:
procedure TForm1.Button1Click(Sender: TObject);
var
QP: TiSEDQuickPDF;
s: string;
begin
QP := TiSEDQuickPDF.Create;
try
s := 'Hello 热情软件屋!';
QP.AddSubsettedFont('宋体', 10, s);
QP.DrawText(100, 500, QP.GetSubsetString(S));
QP.SaveToFile('g:\test.pdf');
finally
QP.Free;
end;
end;
2、书签中带中文的情况var
QP: TiSEDQuickPDF;
s: string;
begin
QP := TiSEDQuickPDF.Create;
try
s := 'Hello 热情软件屋!';
QP.AddSubsettedFont('宋体', 10, s);
QP.DrawText(100, 500, QP.GetSubsetString(S));
QP.SaveToFile('g:\test.pdf');
finally
QP.Free;
end;
end;
如果直接使用NewOutline函数添加中文书签,则最后显示的一定是乱码。要先使用ToPDFUnicode将中文转换为PDF中的Unicode格式才行,如:
QP.NewOutline(Integer(currentNode.Parent.Data),
QP.ToPDFUnicode("热情软件屋"), nPageNumber, 0)
QP.ToPDFUnicode("热情软件屋"), nPageNumber, 0)