转自大富翁论坛,至于如何重新编译可以参考«fastreport 3.07 专业的安装及中文化»
【程序编程相关:序列化FastReport】q:fastreport 3.x导出pdf乱码怎么解决?(中文乱码,英文没问题). 【推荐阅读:Dephi快捷健】
【扩展信息:ASC II 完整码表及简介】a:用下面这代码替换 frxpdffile.pas 中原来的代码就可以了已在enterprise(应该说是professional) 3.07下测试通过; 注意事项:字体内嵌的复选框不可选.procedure tfrxpdffont.savetostream(stream: tstream);
var s: string; b: tbitmap; pm: ^outlinetextmetric; fontname: string; i: cardinal; pfont: pchar; firstchar, lastchar : integer; memstream: tmemorystream; memstream1: tmemorystream; pwidths: pabc; charset: tfontcharset;// support dbcs font name encoding
function encodefontname(afontname: string): string; var s: string; index, len: integer; begin // add begin by ijia 2004.12.20 // 修正在简体系统下繁体字体名的问题 // 只提供 mingliu, pmingliu --> 细明体, 新细明体的修正 s:=uppercase(afontname); if copy(s, 1, 7)=mingliu then afontname:=细明体; if copy(s, 1, 8)=pmingliu then afontname:=新细明体; // add end s := ; len := length(afontname); index := 0; while index < len do begin index := index + 1; if byte(afontname[index]) > $7f then s := s + # + inttohex(byte(afontname[index]), 2) else s := s + afontname[index]; end; result := s; end;begin
inherited savetostream(stream); b := tbitmap.create; b.canvas.font.assign(font); b.canvas.font.size := 750; i := getoutlinetextmetrics(b.canvas.handle, 0, nil); ... 下一页