使用Java中的胸腺叶html模板下载pdf文件时,css样式不可见。
问题描述
我使用的是胸叶html模板。当我预览页面时,样式看起来不错。当我下载pdf时,我没有看到任何应用的css样式。Pdf只包含内容,不包含我应用的样式。
//下载生成代码
我引用并使用的PDF生成代码link
//示例代码
//服务器端代码
推荐答案
您似乎正在使用飞碟以PDF格式呈现生成的百里叶模板。
这里可能有几个问题。
首先,您需要向Fliding Source提供一个适当的XHTML文档。对于此任务,您可以使用JTidy将呈现的Thymeleaf模板转换为XHTML:它可能在非常复杂的HTML中不起作用,但很可能在您的用例中起作用。
JTidy有很多版本。对不起,在上一个版本的答案中,我为您提供了一个我以前使用的过时答案的引用,它可能不适用于您需要的HTML5。请使用以下依赖项,基于全新的JTidyproject:
例如,在问题中指出的PdfService
类的源代码中,将generatePdf
方法修改如下:
其中convertToXhtml
如下所示(是针对新的JTidy库版本改编的前一个版本的更新版本):
查看执行此过程后页面的外观:您正在应用许多内联样式,PDF应该会看起来更好。
此外,不使用外部CDN分布式样式表,而是使用它们的本地副本,您的应用程序可以将其作为PdfService
类的源代码中标识为PDF_RESOURCES
的资源进行访问。
正如您在该类的renderPdf
的implementation中看到的那样,它被用作基本URL以查找页面中引用的不同资源。
遵循这些步骤,稍作调整,您应该能够获得类似以下PDF的内容:
如果飞碟不能满足您的要求,请查看任何无头浏览器,例如PhantomJS进行转换。
这篇关于使用Java中的胸腺叶html模板下载pdf文件时,css样式不可见。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!