0

我正在使用 DynamicPDF 生成带有一些韩文文本的 PDF 文件。我正在为 CJK 字符使用 PDF 系统字体并且没有得到可怕的方块,我只是得到......空白。

字符占用空间,然后添加拉丁字符确实显示在您期望的位置。选择空格并右键单击或复制它会显示正确的预期字符,因此它们存在。

我的系统确实呈现韩文文本,在 chrome 中的 HTML 页面中显示它有效,而在 chrome 中的 PDF 没有。

这是一个最小示例,其中包含(工作)日文文本进行比较。

可怜的韩文:(

ceTe.DynamicPDF.Document document = new ceTe.DynamicPDF.Document();
ceTe.DynamicPDF.Page page = new ceTe.DynamicPDF.Page(PageSize.Letter, PageOrientation.Portrait, 54.0f);

// Create a Label to add to the page
var testString = "Korean: 안녕하세요 세계 </korean>";
page.Elements.Add(new Label(testString, 0, 0, 504, 100, Font.SinoTypeSongLight, 18, TextAlign.Center));
page.Elements.Add(new Label(testString, 0, 100, 504, 100, Font.HanyangSystemsGothicMedium, 18, TextAlign.Center));
page.Elements.Add(new Label(testString, 0, 200, 504, 100, Font.HanyangSystemsShinMyeongJoMedium, 18, TextAlign.Center));

testString = "Japan: こんにちは世界 </japan>";
page.Elements.Add(new Label(testString, 0, 300, 504, 100, Font.SinoTypeSongLight, 18, TextAlign.Center));

// Add page to document
document.Pages.Add(page);

// Outputs the document to the current web page
document.Draw("D:/HelloWorld.pdf");
4

1 回答 1

2

请参阅有关CJK 字体的 DynamicPDF 文档。

您用于添加韩文字符的 SinoTypeSongLight 字体实际上支持简体中文字符。该字体不支持韩文字符,因此 PDF 中的第一行应有空格。

在第二行和第三行中,您实际上使用了支持韩文字符的正确字体(HanyangSystemsGothicMedium 和 HanyangSystemsShinMyeongJoMedium)。但是,根据上面的文档链接,您应该在查看此 PDF 的机器上安装了亚洲字体包。我不确定您的 Chrome 浏览器使用什么 PDF 查看器插件,但 Adob​​e Reader 等 PDF 查看器提供亚洲字体包作为附加组件。请查看屏幕截图,该屏幕截图显示了使用您的代码在 Adob​​e Reader DC 中使用亚洲字体包生成的 PDF。

在此处输入图像描述

免责声明:我在开发 DynamicPDF 库的公司 ceTe Software 工作。

于 2016-10-07T14:10:14.387 回答