使用spire.doc for java转换word文档到pdf时,word文档中应用到的安装字体会被自动嵌入pdf文档;若word文档应用了非安装字体,则该字体不会被自动嵌入pdf文档。这就容易造成转换前后效果不一致,甚至出现乱码。为了避免这个问题,我们需要将word文档中应用到的非安装字体嵌入转换后的pdf文档。
import com.spire.doc.document;
import com.spire.doc.privatefontpath;
import com.spire.doc.topdfparameterlist;
import com.spire.doc.documents.paragraph;
import com.spire.doc.fields.textrange;
import java.util.*;
public class embedprivatefontinconvertedpdf {
public static void main(string[] args) {
//创建document对象
document document = new document();
//添加段落
paragraph paragraph = document.addsection().addparagraph();
//初始化privatefontpath对象,指定私有字体路径
privatefontpath fontpath = new privatefontpath("方正手迹-乾坤体","c:\\users\\administrator\\desktop\\fzsj.ttf");
//添加文本到段落
textrange tr = paragraph.appendtext("spire.doc for java是一款专门对word文档进行操作的java类库。"
"这款控件的主要功能在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印microsoft word文档。");
//应用字体
tr.getcharacterformat().setfontname("方正手迹-乾坤体");
tr.getcharacterformat().setfontsize(18f);
//创建topdfparameterlist对象,用于设置word转pdf的参数
topdfparameterlist topdfparameterlist = new topdfparameterlist();
//将私有字体作为word转pdf的参数之一
list pathlist = new linkedlist<>();
pathlist.add(fontpath);
topdfparameterlist.setprivatefontpaths(pathlist);
//将word文档保存为pdf
document.savetofile("output/embedfont.pdf",topdfparameterlist);
}
}