![](/img/trans.png)
[英]Converting html to PDF to using iText - pass external CSS as a string?
[英]HTML to PDF using iText External CSS
我正在使用Flying Saucer将一些PDF文档从字符串渲染为HTML。
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream is = new ByteArrayInputStream(html.getBytes("UTF-8"));
Document doc = builder.parse(is);
response.setContentType("application/pdf; charset=UTF-8");
response.setHeader("Content-disposition", "inline; filename=\"" + outFileName + "\"");
OutputStream os = response.getOutputStream();
ITextRenderer iTextRenderer = new ITextRenderer();
iTextRenderer.setDocument(doc,null);
iTextRenderer.layout();
iTextRenderer.createPDF(os);
os.flush();
os.close();
当我有纯文本时,这很好用。 我在HTML内容中引用了一个外部CSS。 但是,当生成PDF时,CSS不会被应用。
我读过setDocument()
方法有两个参数:document和url。 url参数指示用于添加到xhtml中出现的相对路径的基本URL,例如外部CSS
所以,我试图供应
上下文路径/ css
baseURL中的direcotry并在setDocument()
使用它。 仍然没有结果
那么,我的问题作为baseURL传递的正确URL是什么?
String baseURL = ""; // What goes here as root URL for resources
iTextRenderer.setDocument(doc,baseURL);
FAQ告诉我们:
url是“base”,对于普通URL,它将是父位置 - 父目录,或者是您呈现的文档所在的位置。如果您的文档具有CSS和图像的绝对URI,或者它没有外部引用,然后基本URL可以为null。如果您的文档具有CSS或图像的任何相对URI,则基本URL不应为null,而应指向当前文档所在的目录或地址。
您是否测试了文档的路径而不是css的路径? 但是,我在链接CSS方面遇到了一些麻烦,所以我插入了URI(到目前为止没有问题:-))。 如果您使用上面发布的链接,它是否有效?
对不起新帖子,但评论告诉我,我只剩下负面的字母...
您可以通过put来插入CSS路径
<link rel="stylesheet" type="text/css" href="file://path/to/your.css" />
进入你的文件(头)。
(在某些情况下,您可以使用简单路径而不是URI)
问题不在于文件路径,问题在于媒体。 有一件事是渲染到屏幕和其他渲染来打印媒体,如PDF文件。 因此,您需要在XML文件中的样式表TAG中添加属性。
来自code.google.com/p/flying-saucer/wiki/FAQPDF
我的PDF没有拿起我的CSS!
PDF被视为“印刷”媒体; 请参阅有关媒体类型的CSS 2.1规范部分。 确保在链接或嵌入CSS时为CSS指定了媒体类型; 使用“打印”或“全部”类型。
快速回答是将属性media="all"
到XML样式表TAG,如下所示:
<?xml-stylesheet href="foo.css" media="all" type="text/css"?>
另外你可以使用media="print"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.