Thông báo kế thừa! ITEXT 5 là phiên bản chính trước đây của SDK PDF hàng đầu của ITEXT. ITEXT 5 đã được EOL, và không còn được phát triển. Chuyển dự án của bạn sang ITEXT 7, tích hợp các phát triển mới nhất. Kiểm tra nội dung ITEXT 7 liên quan! Tôi muốn thêm một tệp CSS trong khi tạo PDF. Hiện tại tôi đang sử dụng mã sau để tạo PDF trong tệp JSP:
Check related iText 7 content!
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[];
Với mã này, tôi có thể tạo PDF, nhưng tôi muốn thêm tệp CSS trong khi tạo PDF.
Đăng trên Stackoverflow vào ngày 16 tháng 7 năm 2014 bởi Yella Goud
Vui lòng xem ví dụ parsehtmltable1. Trong ví dụ này, chúng tôi có HTML được lưu trữ trong một đối tượng StringBuilder
và một số CS được lưu trữ trong String
. Trong ví dụ của tôi, tôi chuyển đổi đối tượng sb
và đối tượng CSS
thành InputStream
. Nếu bạn có các tệp với HTML và CSS, bạn có thể dễ dàng sử dụng
// 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[]]];
0.Khi bạn có InputStream
cho HTML và CSS, bạn có thể sử dụng mã này:
// 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[]]];
Hoặc, nếu bạn không thích tất cả mã đó:
ByteArrayInputStream bis =
new ByteArrayInputStream[htmlSource.toString[].getBytes[]];
ByteArrayInputStream cis =
new ByteArrayInputStream[cssSource.toString[].getBytes[]];
XMLWorkerHelper.getInstance[].parseXHtml[writer, document, bis, cis];
Vui lòng xem ví dụ parsehtmltable1. Trong ví dụ này, chúng tôi có HTML được lưu trữ trong một đối tượng StringBuilder
và một số CS được lưu trữ trong String
. Trong ví dụ của tôi, tôi chuyển đổi đối tượng sb
và đối tượng CSS
thành InputStream
. Nếu bạn có các tệp với HTML và CSS, bạn có thể dễ dàng sử dụng
// 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[]]];
0.Khi bạn có InputStream
cho HTML và CSS, bạn có thể sử dụng mã này:
// 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[]]];
Hoặc, nếu bạn không thích tất cả mã đó:
ByteArrayInputStream bis = new ByteArrayInputStream[htmlSource.toString[].getBytes[]];
ByteArrayInputStream cis = new ByteArrayInputStream[cssSource.toString[].getBytes[]];
XMLWorkerHelper.getInstance[].parseXHtml[writer, document, bis, cis];