【问题标题】:jasper-reports generate empty pdf in linuxjasper-reports 在 linux 中生成空的 pdf
【发布时间】:2015-04-13 05:42:54
【问题描述】:
  1. 我用过 jasper-reports 3.*
  2. 我的应用服务器是 jboss
  3. 操作系统是 windows:一切正常,生成的 pdf 显示正确

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

引起:
1.也许字体不存在!!

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

但问题仍未解决...

会有任何帮助吗?

【问题讨论】:

  • 你说你的PDF是空的是什么意思。如果您的意思是您可以看到所有页面,但它们都是空白的,那么您可能是在“刮字节”。 PDF 起源于 1993 年的 ASCII 格式,但很快它就变成了二进制格式。所有的“结构”仍然是 ASCII,但页面的内容通常存储为二进制流。如果将二进制 PDF 视为纯文本,则会保留结构,但不会保留页面流。结果,您只能看到空白页。你是这种情况吗?
  • 是的,所有页面都生成了,但都是空白的,只有图像和边框正确显示,任何文字都没有显示
  • 如果显示行,你的问题不是我最初想的那样。字体可能是问题。
  • 我是这么认为的,字体是问题,但解决方案是什么!?

标签: java linux pdf fonts jasper-reports


【解决方案1】:

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中添加字体

    • Arial.ttf
    • Arial_Bold.ttf
    • Arial_Italic.ttf
    • Arial_Bold_Italic.ttf

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

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

一些解释:

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

【讨论】:

  • 感谢您的解决方案,但它在 jasper-report 3.0.1 中有效吗!? ,我应该使用什么版本!?
  • 从 3.1.3 版本开始支持此功能
  • 我有 Jasper 3.7.1 并使用字体扩展,它在 Windows 中可以正常工作,但在 Linux 中显示了一些文本但有些没有,并且所有图表都有问题!真的我不知道是什么问题,也许pdf生成器(itext 2.7.1.jar)不能正常工作!!!
  • 我有一些报告在同一个项目中使用 Birt 报告进行设计,所有带有 Birt 的报告在 Windows 和 Linux 中都能正常工作!!!但是碧玉……
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-29
      • 2012-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      相关资源
      最近更新 更多