在具有jboss 7.1及更高版本的linux中使用itext和Flying Saucer将html转换为pdf时未嵌入字体

问题描述

如果您有任何想法,可以请您帮助我们解决此问题。

我已经尝试了HTML到PDF转换逻辑的独立应用程序,并且HTML具有一些特殊字符(Ω,ω),因为我在HTML到PDF转换程序中添加了一些字体(AppliMincho,Arial Unicode MS)。 / p>

在Linux中使用jboss 6.4可以正常工作,并且配置的字体已嵌入到PDF中。

在使用jboss 7.1及更高版本的linux中它不能正常工作,并且配置的字体未嵌入PDF中。

在使用jboss 7.1及更高版本的Windows中,它运行良好,并且配置的字体未嵌入PDF中。

注意:对于HTML到PDF的转换,我已经尝试过这些API(飞碟PDF,OpenHtmlToPdf),这两个api均在“ PdfBox” API上运行,因此两种方法给出的结果相同。

请完善我编写的程序。

@WebServlet("/NewServlet")
public class NewServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
       
    protected void doGet(HttpServletRequest request,HttpServletResponse response) throws servletexception,IOException {
    String htmlString = "";
    try {
        BufferedReader in = new BufferedReader(new FileReader("/opt/Network/MetaData/html-cps.html"));
        String str;
        while ((str = in.readLine()) != null) {
            htmlString +=str;
        }
        in.close();
    } catch (IOException e) {
    }
    HtmlCleaner cleaner = new HtmlCleaner();
    TagNode roottagNode = cleaner.clean(htmlString);
    CleanerProperties cleanerProperties = cleaner.getProperties();
    XmlSerializer xmlSerializer = new PrettyXmlSerializer(cleanerProperties);
    String cleanedHtml = xmlSerializer.getAsstring(roottagNode);

    try {
        renderPDF(cleanedHtml,new FileOutputStream("/opt/Network/MetaData/NewHtmlToPdf.pdf"));
    } catch (Exception e) {
    }
    }
    
    private static void renderPDF(String html,OutputStream outputStream) throws Exception {
        try {
            PdfRendererBuilder builder = new PdfRendererBuilder();
            builder.buildPdfRenderer().getFontResolver().addFont(new File("/opt/Network/MetaData/Arial Unicode MS.ttf"),"Arial Unicode MS",12,IdentValue.ABSOLUTE,true);
            builder.withHtmlContent(html,"/opt/Network/MetaData/Test");
            builder.toStream(outputStream);
            builder.run();
        } finally {
            outputStream.close();
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...