FO.NET 创建的 PDF 元数据中的西里尔字母

发布于 2024-12-09 04:25:59 字数 386 浏览 0 评论 0 原文

有没有人成功地在 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");

Has anyone succeeded in showing Cyrillic letters in the metadata of a PDF file that is generated by FO.NET? I tried the following code, but the metadata of the generated PDF displays only "Title: ??????":

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

若无相欠,怎会相见 2024-12-16 04:25:59

这里是其论坛讨论的链接。似乎他们根本不支持 Unicode,因为 MapCharacter 方法进行了硬编码:

ushort charIndex = CodePointMapping.GetMapping("WinAnsiEncoding").MapCharacter(c);

似乎 最新版本也有同样的问题。

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:

ushort charIndex = CodePointMapping.GetMapping("WinAnsiEncoding").MapCharacter(c);

It also seems that the recent version has the same problem.

葮薆情 2024-12-16 04:25:59

我不知道 FO.NET 的详细信息,但如果您在字符串前面加上十六进制 FEFF(UTF 字节顺序标记 - BOM),则 PDF 中的“文本字符串”类型通常可以保存 UTF-16 数据(不是 UTF-8!) 。
在 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:“文本字符串类型”)

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:

$pdfTitle = "\xfe\xff" . mb_convert_encoding($myTitleString, "UTF-16BE", "UTF-8");

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")

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文