我正在使用DynamicPDF生成带有一些韩文文本的PDF文件。我使用PDF系统字体表示CJK字符,并没有得到可怕的方格,我只是得到......空白。
角色会占用空间,之后添加拉丁字符会显示在您期望的位置。选择空白区域并右键单击或复制它会显示正确的预期字符,以便它们存在。
我的系统确实呈现韩文文本,在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");
答案 0 :(得分:2)
请参阅CJK fonts上的DynamicPDF文档。
用于添加韩文字符的SinoTypeSongLight字体实际上支持简体中文字符。该字体不支持韩文字符,因此PDF中的第一行预计会出现空白。
在第二行和第三行中,您实际上使用了支持韩语字符的正确字体(HanyangSystemsGothicMedium&amp; HanyangSystemsShinMyeongJoMedium)。但是,根据上面的文档链接,您应该在要查看此PDF的计算机上安装Asian Font Pack。我不确定您的Chrome浏览器使用什么PDF查看器插件,但Adobe Reader等PDF查看器提供亚洲字体包作为插件。请参阅屏幕截图,其中显示了使用亚洲字体包在Adobe Reader DC中使用您的代码生成的PDF。
免责声明:我为开发DynamicPDF库的公司ceTe Software工作。