FO.NET 创建的 PDF 元数据中的西里尔字母
有没有人成功地在 FO.NET 生成的 PDF 文件的元数据中显示西里尔字母?我尝试了以下代码,但生成的PDF的元数据仅显示“标题:??????”:
FonetDriver driver = FonetDriver.Make();
PdfRendererOptions options = new PdfRendererOptions();
options.FontType = FontType.Embed;
options.Title = "Title: Услуги";
driver.Options = options;
driver.Render("Input_cyrillic.fo", "Output.pdf");
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这里是其论坛讨论的链接。似乎他们根本不支持 Unicode,因为
MapCharacter
方法进行了硬编码:似乎 最新版本也有同样的问题。
Here is the link to discussion on their forum. It seems to be that they don't support Unicode at all due to
MapCharacter
method has this hardcoded:It also seems that the recent version has the same problem.
我不知道 FO.NET 的详细信息,但如果您在字符串前面加上十六进制 FEFF(UTF 字节顺序标记 - BOM),则 PDF 中的“文本字符串”类型通常可以保存 UTF-16 数据(不是 UTF-8!) 。
在 PHP 中,它看起来像这样:
这会将标题从 UTF-8 转换为 UTF-16,并在其前面添加 BOM。
有关详细信息,请参阅 PDF 文档:http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf
(第 7.9 章。 2.2:“文本字符串类型”)
I do not know the details of FO.NET, but generally "text string" types in PDF can hold UTF-16 data (not UTF-8!) if you prepend the string with hex FEFF (the UTF byte order mark - BOM).
In PHP it looks like this:
This converts the title from UTF-8 to UTF-16 and prepends it with the BOM.
See the PDF docs for details: http://wwwimages.adobe.com/www.adobe.com/content/dam/Adobe/en/devnet/pdf/pdfs/PDF32000_2008.pdf
(chapter 7.9.2.2: "Text String Type")