gpt4 book ai didi

css - 使用 IText 将 XHTML 转换为 PDF - 需要专家

转载 作者:太空宇宙 更新时间:2023-11-04 13:24:21 24 4
gpt4 key购买 nike

我正在使用 iText 将 XHTML 转换为 PDF。我使用 XLSX 到 HTML 转换器创建了 XHTML 并清除了。 Here你可以看到 HTML 页面。关键是我无法将其转换为 A4 页面上的等效 PDF。我尝试了最近和较旧的 iText 库,使用了 ITextRenderer、XMLWorkerHelper 和 HTMLWorker,但没有人正确创建 PDF。按照我的尝试。

外部 CSS 示例(HTML 和 CSS 是路径):

com.itextpdf.text.Document document = new com.itextpdf.text.Document(PageSize.A4);
PdfWriter pdfWriter = PdfWriter.getInstance
(document, new FileOutputStream(PDF));
document.open();
document.addAuthor("Real Gagnon");
document.addCreator("Real's HowTo");
document.addSubject("Thanks for your support");
document.addCreationDate();
document.addTitle("Please read this");

XMLWorkerHelper worker = XMLWorkerHelper.getInstance();

String str = readHtml();
worker.parseXHtml(pdfWriter, document, new FileInputStream(HTML), new FileInputStream(CSS));
document.close();

使用 ITextRenderer 和内部 CSS 的示例,但由于它不考虑字体标签,我以编程方式添加了字体:

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new ByteArrayInputStream(readHtml().getBytes("UTF-8")));

ITextRenderer renderer = new ITextRenderer();
File tmpFontFile = new File(
"C:\\Android\\workspace\\GestioneCommesse\\WebContent\\resources\\font\\arial_narrow.ttf");
renderer.getFontResolver().addFont(tmpFontFile.getAbsolutePath(), BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.setDocument(doc, null);

FileOutputStream os = new FileOutputStream(PDF);
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "yes");
tf.transform(new DOMSource(doc), new StreamResult(os));
os.close();

File file = new File("c:\\temp.pdf");
file.createNewFile();
OutputStream os2 = new FileOutputStream(file);
renderer.layout();
renderer.createPDF(os2);
os.close();

在这里你可以看到我得到的两个结果。在一个 pdf 中,整个 css 都丢失了,而在另一个 pdf 中,我无法更改宽度和字体样式:

Example1已使用 XmlWorkerHelper 和 Example2 创建使用 iTextRenderer

THIS示例我得到结果 2

最佳答案

我正在做一个元素,我也遇到了字体问题。我在 html 页面上用画笔脚本字体设计了一个 div,当我创建一个 PDF 时,该字体没有显示在 PDF 上。我注意到通过将引号从单引号更改为双引号对我有用。

这是我之前的:

< div style="font-family : 'Brush Script MT';" >< /div >

(注意单引号和双引号的位置,这是行不通的)然后我尝试了

< div style='font-family : "Brush Script MT";'>

(起初它自己并没有工作)

但后来我使用 FontFactory 注册了字体并给它一个同名的别名。

FontFactory.RegisterDirectories();
var fontPath = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\BRUSHSCI.TTF";
FontFactory.Register(fontPath, "Brush Script MT");

希望对你有帮助

关于css - 使用 IText 将 XHTML 转换为 PDF - 需要专家,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com