DynamicPDF 创建的 PDF 将韩文文本呈现为空白
PDF created by DynamicPDF renders korean text as blank
我正在使用 DynamicPDF 生成包含一些韩语文本的 PDF 文件。我正在为 CJK 字符使用 PDF 系统字体,但没有得到可怕的方块,我只是得到...空白。
这些字符占 space,然后添加拉丁字符确实会出现在您期望的位置。选择空白 space 并右键单击或复制它会显示正确的预期字符,因此它们存在。
我的系统确实呈现韩语文本,在 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");
请参阅 CJK fonts 上的 DynamicPDF 文档。
您用于添加韩文字符的SinoTypeSongLight字体实际上支持简体中文字符。该字体不支持韩文字符,因此 PDF 的第一行应为空白 space。
在第二行和第三行中,您实际上使用了支持韩语字符的正确字体 (HanyangSystemsGothicMedium & HanyangSystemsShinMyeongJoMedium)。但是,根据上面的文档 link,您应该在查看此 PDF 的机器上安装了亚洲字体包。我不确定您的 Chrome 浏览器使用的是什么 PDF 查看器插件,但像 Adobe Reader 这样的 PDF 查看器提供了 Asian Font Pack 作为附加组件。请查看显示使用您的代码在 Adobe Reader DC with Asian Font Pack 中生成的 PDF 的屏幕截图。
免责声明:我在开发 DynamicPDF 库的公司 ceTe Software 工作。
我正在使用 DynamicPDF 生成包含一些韩语文本的 PDF 文件。我正在为 CJK 字符使用 PDF 系统字体,但没有得到可怕的方块,我只是得到...空白。
这些字符占 space,然后添加拉丁字符确实会出现在您期望的位置。选择空白 space 并右键单击或复制它会显示正确的预期字符,因此它们存在。
我的系统确实呈现韩语文本,在 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");
请参阅 CJK fonts 上的 DynamicPDF 文档。
您用于添加韩文字符的SinoTypeSongLight字体实际上支持简体中文字符。该字体不支持韩文字符,因此 PDF 的第一行应为空白 space。
在第二行和第三行中,您实际上使用了支持韩语字符的正确字体 (HanyangSystemsGothicMedium & HanyangSystemsShinMyeongJoMedium)。但是,根据上面的文档 link,您应该在查看此 PDF 的机器上安装了亚洲字体包。我不确定您的 Chrome 浏览器使用的是什么 PDF 查看器插件,但像 Adobe Reader 这样的 PDF 查看器提供了 Asian Font Pack 作为附加组件。请查看显示使用您的代码在 Adobe Reader DC with Asian Font Pack 中生成的 PDF 的屏幕截图。
免责声明:我在开发 DynamicPDF 库的公司 ceTe Software 工作。