有没有人成功地在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");
答案 0 :(得分:0)
Here是其论坛讨论的链接。似乎他们根本不支持Unicode,因为MapCharacter
方法有这个硬编码:
ushort charIndex = CodePointMapping.GetMapping("WinAnsiEncoding").MapCharacter(c);
似乎recent version也有同样的问题。
答案 1 :(得分:0)
我不知道FO.NET的细节,但是如果你在字符串前加上十六进制FEFF(UTF字节顺序标记),PDF中的“文本字符串”类型通常可以保存UTF-16数据(不是UTF-8!) - BOM)。 在PHP中它看起来像这样:
$pdfTitle = "\xfe\xff" . mb_convert_encoding($myTitleString, "UTF-16BE", "UTF-8");
这会将标题从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节:“文本字符串类型”)