前言
有些情況在透過 Aspose.Words 另存成 PDF 檔後,
有些字在 PDF 中會變成 空白框(square box) 或是變成 空白,
但那些字又不自造字,怎麼會這樣子呢?
例如,U+2FA6(⾦) 這個字,可是在 Word 中明明可以正常顯示。
解法
測試的 C# 程式如下(請先加入 Aspose.Words 套件),
1 | var docxPath = @"c:\temp\h2docx.docx"; |
Word 檔 及 另存的 PDF 如上圖所示,
從 Word 檔中可以發現字型是使用「Times New Roman」,
有同事說,如果是 「Microsoft YaHei」 字型,在 PDF 中顯示似乎是正常的。
那…
我們要如何將 Word 中的字型全都改成 「Microsoft YaHei」 呢?
這時,我們可以透過 Document.Accept Method 透過 DocumentVisitor 將字型全都改成 「Microsoft YaHei」。
所以先新增一個繼承自 DocumentVisitor 的 FontChanger Class,
來將字型改成 「Microsoft YaHei」。
1 | public class FontChanger : DocumentVisitor |
再來就是新增 FontChanger ,並呼叫 Document.Accept Method,如下,
1 | var docxPath = @"c:\temp\h2docx.docx"; |
透過 FontChanger 將 Word 檔中的字型全換成 「Microsoft YaHei」 後,
再另存 PDF 檔後, U+2FA6(⾦) 這個字,也可以正常顯示了。
參考資源
U+2FA6(⾦)
標楷體支援的 Unicode
Word 檔中有 Kangxi 字,透過 Aspose.Words 另存成 PDF,該字無法呈現
Document.Accept Method
DocumentVisitor
Change text font of whole document using C#