飞碟添加嵌入字体无法在 tomcat 上运行
Flying Saucer adding embedded font not working on tomcat
我正在使用 Flying Saucer 将 XHTML 转换为 PDF 文件。我的问题是我在 PDF 中缺少一些土耳其语字符。但我不明白的是,我在 junit 测试中没有任何问题。我可以毫无问题地将 XHTML 文件转换为包含所有土耳其语字符的 PDF。但是,如果我对部署在 Tomcat 上的 Applicaton 执行相同操作,则所有土耳其字符都将丢失。
我做了一些调试,发现在这两种情况下都找到了“/fonts/arialuni.ttf”。我找到了一些相关的线程和 itext 文档并尝试了所有这些。
http://developers.itextpdf.com/question/how-can-i-load-font-web-infresourcesfontsfoobarttf
Flying Saucer font for unicode characters
转换和添加字体的代码
String path2 = "/fonts/arialuni.ttf";
//FontFactory.register(path2);
ITextRenderer renderer = new ITextRenderer();
// renderer.getFontResolver().addFontDirectory(path2,true);
renderer.getFontResolver().addFont(path2, BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
renderer.setDocumentFromString(docElem.html());
renderer.layout();
renderer.createPDF(os);
renderer.finishPDF();
baoOut.flush();
并且还为 CSS 申请了关注。但还是一样的结果。
@font-face {
src: url('arialuni.ttf'); <!--src: url('/fonts/arialuni.ttf'); -->
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: Identity-H;
}
body {
font-family: Arial Unicode MS, Lucida Sans Unicode, Arial, verdana, arial, helvetica, sans-serif;
font-size: 8.8pt;
}
有谁知道,为什么 arialuni.tff 被发现但没有在 Tomcat 上使用?
终于解决了。在某些地方我使用了
InputStream htmlIS = IOUtils.toInputStream(invoiceHtml);
改为
InputStream htmlIS = IOUtils.toInputStream(invoiceHtml, "UTF-8");
导致问题。
我正在使用 Flying Saucer 将 XHTML 转换为 PDF 文件。我的问题是我在 PDF 中缺少一些土耳其语字符。但我不明白的是,我在 junit 测试中没有任何问题。我可以毫无问题地将 XHTML 文件转换为包含所有土耳其语字符的 PDF。但是,如果我对部署在 Tomcat 上的 Applicaton 执行相同操作,则所有土耳其字符都将丢失。
我做了一些调试,发现在这两种情况下都找到了“/fonts/arialuni.ttf”。我找到了一些相关的线程和 itext 文档并尝试了所有这些。
http://developers.itextpdf.com/question/how-can-i-load-font-web-infresourcesfontsfoobarttf
Flying Saucer font for unicode characters
转换和添加字体的代码
String path2 = "/fonts/arialuni.ttf";
//FontFactory.register(path2);
ITextRenderer renderer = new ITextRenderer();
// renderer.getFontResolver().addFontDirectory(path2,true);
renderer.getFontResolver().addFont(path2, BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
renderer.setDocumentFromString(docElem.html());
renderer.layout();
renderer.createPDF(os);
renderer.finishPDF();
baoOut.flush();
并且还为 CSS 申请了关注。但还是一样的结果。
@font-face {
src: url('arialuni.ttf'); <!--src: url('/fonts/arialuni.ttf'); -->
-fs-pdf-font-embed: embed;
-fs-pdf-font-encoding: Identity-H;
}
body {
font-family: Arial Unicode MS, Lucida Sans Unicode, Arial, verdana, arial, helvetica, sans-serif;
font-size: 8.8pt;
}
有谁知道,为什么 arialuni.tff 被发现但没有在 Tomcat 上使用?
终于解决了。在某些地方我使用了
InputStream htmlIS = IOUtils.toInputStream(invoiceHtml);
改为
InputStream htmlIS = IOUtils.toInputStream(invoiceHtml, "UTF-8");
导致问题。