Hướng dẫn how do you add external css while generating a pdf? - làm thế nào để bạn thêm css bên ngoài trong khi tạo pdf?

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!
Check related iText 7 content!

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:

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);  

CSS có hoạt động trong PDF không?

Bạn có thể thay đổi giao diện của PDF, ví dụ như sử dụng một màu khác hoặc một phông chữ mới.Đầu tiên bạn thêm các quy tắc CSS vào CSS tùy chỉnh.Các quy tắc CSS sau đó được áp dụng khi bạn tạo PDF.First you add the CSS rules to the custom CSS. The CSS rules are then applied when you create a PDF.

Làm thế nào bạn có thể tích hợp CSS bên ngoài trên một trang web?

CSS bên ngoài Có hai cách để bao gồm một bảng kiểu bên ngoài trong một tài liệu HTML.Một phương pháp là sử dụng thẻ trong đầu tài liệu HTML.Một tùy chọn khác là sử dụng kết hợp các hàm CSS bên ngoài và CSS tích hợp.use the tag in the HTML document head. Another option is to use a combination of external CSS functions and integrated CSS.

Làm thế nào chúng ta có thể đề cập đến một bảng kiểu bên ngoài trong CSS?

Hồ sơ kiểu bên ngoài Sử dụng thẻ bên trong phần tử đầu.Thuộc tính REL giải thích mối quan hệ mà liên kết có với tài liệu của chúng tôi.Giá trị trong trường hợp này sẽ luôn luôn là biểu định kiểu, vì đó là những gì chúng tôi đang tạo liên kết đến.Thuộc tính HREF là liên kết đến bảng kiểu của chúng tôi.use the tag inside the head element. The rel attribute explains the relation the link has to our document. The value in this case will always be stylesheet , since that is what we're creating a link to. The href attribute is the link to our stylesheet.