gpt4 book ai didi

java - 如何在使用 Flying Saucer 创建的 PDF 中设置元数据

转载 作者:行者123 更新时间:2023-11-30 06:40:30 25 4
gpt4 key购买 nike

我正在尝试在使用 FlyingSaucer ( https://github.com/flyingsaucerproject/flyingsaucer ) 从 HTML 文件创建的 PDF 文件中设置元数据(例如标题或作者)。

以下是创建 PDF 文件的代码:

    ByteArrayOutputStream out = new ByteArrayOutputStream();

ITextRenderer renderer = new ITextRenderer();
renderer.getFontResolver().addFont("fonts/VERDANA.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("fonts/VERDANAB.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("fonts/VERDANAI.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.getFontResolver().addFont("fonts/VERDANAZ.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
renderer.setDocumentFromString(... HTML as a String ...);
renderer.layout();
renderer.createPDF(out);

FileOutputStream fos = new FileOutputStream(pathPdf);

PdfReader reader = new PdfReader(baos.toByteArray());
PdfStamper stamper = new PdfStamper(reader, fos);

... sets watermark image if available ...

stamper.close();
reader.close();

我尝试过获取 PdfDictionary 并设置元数据,获取信息 map 并设置元数据,以及获取文档来设置元数据,但我无法使其工作。

最佳答案

你可以做得更容易。本质是在createPdf方法之后获取writer,并且在pdf创建过程中一定不能关闭文档,但必须在最后手动关闭:

 ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(html);
renderer.layout();
renderer.createPDF(outputStream, false);
renderer.getWriter().getInfo().put(PdfName.CREATOR, new PdfString("witek"));
renderer.finishPDF();

关于java - 如何在使用 Flying Saucer 创建的 PDF 中设置元数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44440104/

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