繁体   English   中英

jasper-reports 在 linux 中生成空的 pdf

[英]jasper-reports generate empty pdf in linux

  1. 我用过 jasper-reports 3.*
  2. 我的应用服务器是 jboss
  3. 操作系统是 windows:一切正常,生成的 pdf 显示正确

但问题是:
1. 当操作系统为 Linux 时:生成的 pdf 为空

造成的:
1.也许字体不存在!!

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

但是问题还是没有解决...

有什么帮助吗?

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

字体通常是 jasper 中的问题。 你可以像这样在你的应用程序中打包你需要的字体:

  1. 创建一个名为 jasperreports_extension.properties 的文件
  2. 将以下行添加到此属性文件中:

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目录下添加字体

    • 字体.ttf
    • Arial_Bold.ttf
    • Arial_Italic.ttf
    • Arial_Bold_Italic.ttf

根据this how-to,您可以将所有字体添加到您的应用程序中,这样您就无需关心代码执行的是哪个操作系统。

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

一些解释:

  • 你告诉 jasper 字体应该包含在 pdf 中

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

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

安装后需要重启服务器。如果你在tomcat上工作,需要重启。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM