jasper-reports在linux中生成空pdf

时间:2015-02-12 13:09:14

标签: java linux pdf fonts jasper-reports

  1. 我使用了jasper-reports 3。*
  2. 我的应用程序服务器是jboss
  3. 操作系统是Windows:一切正常,生成的pdf正确显示
  4. 但问题是:
    1.当操作系统是Linux时:生成的pdf为空

    由以下原因引起:
    1.可能不存在字体!!

      

    我尝试过这些方法:
      1.在我的应用程序的类路径中复制所有必需的字体   2.在Linux机器上安装所有必需的字体
      3.在JRE / lib / fonts中复制所有必需的字体

    但问题仍未解决......

    任何帮助都会得到满足吗?

3 个答案:

答案 0 :(得分:1)

字体通常是碧玉中的问题。您可以在应用程序中打包所需的字体,如下所示:

  1. 创建一个名为jasperreports_extension.properties
  2. 的文件
  3. 将以下行添加到此属性文件中:
  4. net.sf.jasperreports.extension.registry.factory.fonts=net.sf.jasperreports.engine.fonts.SimpleFontExtensionsRegistryFactory net.sf.jasperreports.extension.simple.font.families.arialfontsfamily=fonts/arial/arialfontsfamily.xml

    1. 在fonts / arial /目录中添加字体描述xml(文件应按属性文件中定义的名称命名 - > arialfontsfamily.xml)

      <?xml version="1.0" encoding="UTF-8"?> <fontFamilies> <fontFamily name="Arial"> <normal><![CDATA[fonts/arial/Arial.ttf]]></normal> <bold><![CDATA[fonts/arial/Arial_Bold.ttf]]></bold> <italic><![CDATA[fonts/arial/Arial_Italic.ttf]]></italic> <boldItalic><![CDATA[fonts/arial/Arial_Bold_Italic.ttf]]></boldItalic> <pdfEncoding>Identity-H</pdfEncoding> <pdfEmbedded><![CDATA[true]]></pdfEmbedded> <exportFonts> <export key="net.sf.jasperreports.html">Arial, Helvetica, sans-serif</export> <export key="net.sf.jasperreports.xhtml">Arial, Helvetica, sans-serif</export> </exportFonts>
      </fontFamily> </fontFamilies>

    2. 在fonts / arial

      目录中添加字体
      • ARIAL.TTF
      • Arial_Bold.ttf
      • Arial_Italic.ttf
      • Arial_Bold_Italic.ttf
    3. 根据此操作方法,您可以将所有字体添加到应用程序中,这样您就不必担心代码执行的操作系统。

      上面使用字体的示例 Arial,Helvetica,sans-serif

      一些解释:

      • 使用 告诉jasper字体应包含在pdf中

答案 1 :(得分:1)

如果您的Linux使用OpenJDK,这是问题,OpenJDK有常规字体和一些图形图表的问题,解决问题安装“sun / Oracle jdk”,所有问题都将完成

答案 2 :(得分:0)

在字体问题期间可能会发生此问题。我已经使用以下命令克服了这些问题。

sudo apt-get install --reinstall ttf-mscorefonts-installer
sudo apt-get install ubuntu-restricted-extras ttf-mscorefonts-installer

安装后需要重新启动服务器。如果您使用的是tomcat,则需要重新启动它。