Java 如何在生成PDF时添加外部CSS?
目前,我正在使用以下代码在JSP文件中生成PDF:Java 如何在生成PDF时添加外部CSS?,java,pdf,itext,Java,Pdf,Itext,目前,我正在使用以下代码在JSP文件中生成PDF: response.setContentType("application/force-download"); response.setHeader("Content-Disposition", "attachment;filename=reports.pdf");
response.setContentType("application/force-download");
response.setHeader("Content-Disposition", "attachment;filename=reports.pdf");
Document document = new Document();
document.setPageSize(PageSize.A1);
PdfWriter writer = null;
writer = PdfWriter.getInstance(document, response.getOutputStream());
document.open();
ByteArrayInputStream bis = new ByteArrayInputStream(htmlSource.toString().getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis);
document.close();
有了这个,我可以生成PDF
但我想在生成PDF时添加CSS文件
请帮助我…您可以尝试此代码参考
$html .= '<style>'.file_get_contents(_BASE_PATH.'stylesheet.css').'</style>';
$html.=''.file_get_contents(_BASE_PATH.'stylesheet.css');
将内容类型更改为
response.setContentType("application/pdf");
请看一看这个例子。在本例中,HTML存储在StringBuilder
对象中,一些CSS存储在String
中。在我的示例中,我将sb
对象和CSS
对象转换为InputStream
。如果你有HTML和CSS文件,你可以很容易地使用FileInputStream
一旦有了HTML和CSS的InputStream
,就可以使用以下代码:
// CSS
CSSResolver cssResolver = new StyleAttrCSSResolver();
CssFile cssFile = XMLWorkerHelper.getCSS(new ByteArrayInputStream(CSS.getBytes()));
cssResolver.addCss(cssFile);
// HTML
HtmlPipelineContext htmlContext = new HtmlPipelineContext(null);
htmlContext.setTagFactory(Tags.getHtmlTagProcessorFactory());
// Pipelines
PdfWriterPipeline pdf = new PdfWriterPipeline(document, writer);
HtmlPipeline html = new HtmlPipeline(htmlContext, pdf);
CssResolverPipeline css = new CssResolverPipeline(cssResolver, html);
// XML Worker
XMLWorker worker = new XMLWorker(css, true);
XMLParser p = new XMLParser(worker);
p.parse(new ByteArrayInputStream(sb.toString().getBytes()));
或者,如果您不喜欢所有这些代码:
ByteArrayInputStream bis = new ByteArrayInputStream(htmlSource.toString().getBytes());
ByteArrayInputStream cis = new ByteArrayInputStream(cssSource.toString().getBytes());
XMLWorkerHelper.getInstance().parseXHtml(writer, document, bis, cis);
我不确定在java中如何使用,但在c中,可以通过以下代码添加外部样式表代码或语法:-
StyleSheet css = new StyleSheet();
css.LoadTagStyle("body", "face", "Garamond");
css.LoadTagStyle("body", "encoding", "Identity-H");
css.LoadTagStyle("body", "size", "12pt");
这对你有帮助吗
问候,,
vinit我想下载PDF。我没有将输出写入浏览器。@YellaGoud此内容类型的标准行为是要求用户执行操作(打开或下载dokument)。我认为,当您为您的意图添加一些解释。您想添加Css文件以对pdf中的内容进行样式化时,这对op和其他访问者会更有帮助?或者您想在创建pdf文件时再创建一个css文件?如果您需要在pdf文件中包含一个图像,并且css指向该图像,该怎么办?