gpt4 book ai didi

java - 添加图像到现有的PDF,java

转载 作者:行者123 更新时间:2023-12-01 08:51:54 24 4
gpt4 key购买 nike

我一直在尝试使用 iText 7 将图像添加到 PDF 文档。

我创建的用于添加图像的函数采用 ImageData 类型,然后将其添加到 Canvas 上的矩形并将其添加到 PDF。但是,我不断收到错误

Exception in thread "main" java.lang.RuntimeException: Exception in Application start method

然后

Caused by: java.io.FileNotFoundException: pdf.pdf (The requested operation cannot be performed on a file with a user-mapped section open)

函数代码为:

protected void ExportToPdf(ImageData img) throws IOException {
PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf"));

PdfCanvas canvas = new PdfCanvas(pdfDoc.getFirstPage());

PageSize ps = PageSize.A4;

Rectangle page = new Rectangle(ps.getWidth(),ps.getHeight());

canvas.addImage(img, page, true);

pdfDoc.close();

`

我的主要内容如下:

public static void main(String[] args) throws IOException { //adds values to maps for the program to use


//starts PDF writer
PdfWriter writer = new PdfWriter("pdf.pdf");
//Initialize PDF document
PdfDocument pdf = new PdfDocument(writer);
// Initialize document
Document document = new Document(pdf);
pdf.addNewPage();

document.close();
writer.close();
pdf.close();

完整的程序获取一个场景并将其转换为图像,然后将其输入到要添加到 PDF 的函数中。其代码是:

WritableImage img = new WritableImage(1000, 700);
scene.snapshot(img);
RenderedImage renderedImage = SwingFXUtils.fromFXImage(img, null);
ImageData imgData = ImageDataFactory.create(SwingFXUtils.fromFXImage(img, null), null);
ExportToPdf(imgData);

任何帮助都会很棒,谢谢。

最佳答案

问题已经出现了

PdfDocument pdfDoc = new PdfDocument(new PdfReader("pdf.pdf"), new PdfWriter("pdf.pdf"));

Itext 不支持写入您正在读取的同一文件。只需写入临时文件并在完成后用它替换原始文件即可。

关于java - 添加图像到现有的PDF,java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42333985/

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