生成PDF PDFBox无头泊坞窗容器失败

我正在使用pdfbox在Java中创buildpdf。 从我的Mac作为普通的Java应用程序运行时,这工作正常。 然而,用例是从服务器端运行这个从Web浏览器生成PDF。

我已经将应用程序部署到docker容器,现在无法工作(加载字体时的各种错误 – arrayindexoutofbounds,eofexception等)。 这似乎是由于pdfbox在java.awt.headless模式下运行的方式,因为当我输出在Mac上运行的模式时,它将为无头模式返回false,而在服务器上返回true。

我在代码中明确地设置了java.awt.headless=fals e设置,现在又出现了一些其他的错误。 缺less与X服务器等有关的图书馆我已经安装了这些,但现在有错误:

 java.awt.AWTError: Can't connect to X11 window server using ':0.0' as the value of the DISPLAY variable. 

围绕SO等有一些build议,例如设置DISPLAY =:0.0等,但这些都没有工作。 在Docker容器中运行显然有些复杂,但任何人都可以在这里提出一些build议吗?

我猜测使用虚拟xserver是答案,但我很难设置这个,然后设置适当的xsessionAuthoriy / DISPLAY /等

事实certificate,这与无头模式运行无关。 被抛出的最初的错误是实际的错误(即字体文件被破坏),我应该坚持这些调查。

问题出在maven用二进制和文本资源混合打包我的应用程序的方式。 添加

 <resources> <resource> <directory>target/classes</directory> </resource> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> <nonFilteredFileExtensions> <nonFilteredFileExtension>ttf</nonFilteredFileExtension> </nonFilteredFileExtensions> 

对我的maven pom停止了字体被破坏。

尽pipe感谢指针。 为了logging,我确实得到了Xvfb工作和显示envvariables设置,在工作时,让我回到原始错误字体被损坏。 为了让Xvfb运行起来,我必须重写docker run命令的入口点来获得一个bash容器,然后从容器中启动我的vert.x进程。