目前我正在使用以下代码在JSP文件中生成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文件。
请帮助我......
答案 0 :(得分:4)
我不确定在java中如何使用但在c#中你可以通过以下代码添加外部样式表代码或语法: -
StyleSheet css = new StyleSheet();
css.LoadTagStyle("body", "face", "Garamond");
css.LoadTagStyle("body", "encoding", "Identity-H");
css.LoadTagStyle("body", "size", "12pt");
可能会帮助你
此致 vinit
答案 1 :(得分:2)
请查看ParseHtmlTable1示例。在此示例中,我们将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);
答案 2 :(得分:0)
您可以尝试使用此代码参考。
$html .= '<style>'.file_get_contents(_BASE_PATH.'stylesheet.css').'</style>';
答案 3 :(得分:-2)
将内容类型更改为
response.setContentType("application/pdf");