将图像添加到现有PDF,java

时间:2017-02-19 23:03:16

标签: java javafx itext

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

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

  

线程“main”中的异常java.lang.RuntimeException:Application start方法中的异常

然后

  

引起:java.io.FileNotFoundException:pdf.pdf(无法对打开用户映射部分的文件执行请求的操作)

功能代码是:

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

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

1 个答案:

答案 0 :(得分:1)

问题已经存在

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

Itext不支持写入您正在阅读的同一文件。只需改为写入临时文件,并在完成后用原始文件替换原始文件。