spring boot itext7 修改生成文档的作者、制作者、标题,并且读取相关的信息。

1、官方的example文件:iText · GitHub

itext-java-7.2.5\kernel\src\test\java\com\itextpdf\kernel\pdf\PdfStampingTest.java

2、修改代码:

@Test
    public void stamping1() throws IOException {
        String filename1 = destinationFolder + "stamping1_1.pdf";
        String filename2 = destinationFolder + "stamping1_2.pdf";

        PdfDocument pdfDoc1 = new PdfDocument(new PdfWriter(filename1));
        pdfDoc1.getDocumentInfo().setAuthor("Alexander Chingarev").
                setCreator("iText 6").
                setAuthor("aaaaaaaaaaaa")
                .setKeywords("123")
                .setProducer("abcdefghijklmkuyvklfsdklsdfjksdfj")
                .setSubject("kldsjf")
                .setTrapped(new PdfName("hellksdl"))
                .setTitle("Empty iText 6 Document");
        PdfPage page1 = pdfDoc1.addNewPage();
        page1.getContentStream(0).getOutputStream().write(ByteUtils.getIsoBytes("%Hello World\n"));
        page1.flush();
        pdfDoc1.close();

        PdfReader reader2 = new PdfReader(filename1);
        PdfWriter writer2 = new PdfWriter(filename2);
        PdfDocument pdfDoc2 = new PdfDocument(reader2, writer2);
        pdfDoc2.getDocumentInfo().setCreator("iText 7").setTitle("Empty iText 7 Document");
        pdfDoc2.close();

        PdfReader reader3 = new PdfReader(filename2);
        PdfDocument pdfDoc3 = new PdfDocument(reader3);
        for (int i = 0; i < pdfDoc3.getNumberOfPages(); i++) {
            pdfDoc3.getPage(i + 1);
        }
        assertEquals("Rebuilt", false, reader3.hasRebuiltXref());
        assertEquals("Fixed", false, reader3.hasFixedXref());
        verifyPdfPagesCount(pdfDoc3.getCatalog().getPageTree().getRoot().getPdfObject());
        pdfDoc3.close();

        PdfReader reader = new PdfReader(destinationFolder + "stamping1_2.pdf");
        PdfDocument document = new PdfDocument(reader);
        assertEquals("Rebuilt", false, reader.hasRebuiltXref());
        PdfDictionary trailer = document.getTrailer();
        PdfDictionary info = trailer.getAsDictionary(PdfName.Info);
        PdfString creator = info.getAsString(PdfName.Creator);
        assertEquals("iText 7", creator.toString());
        byte[] bytes = document.getPage(1).getContentBytes();
        assertEquals("%Hello World\n", new String(bytes));
        String date = document.getDocumentInfo().getPdfObject().getAsString(PdfName.ModDate).getValue();
        Calendar cl = PdfDate.decode(date);
        double diff = DateTimeUtil.getUtcMillisFromEpoch(null) - DateTimeUtil.getUtcMillisFromEpoch(cl);
        String message = "Unexpected creation date. Different from now is " + (float) diff / 1000 + "s";
        assertTrue(message, diff < 5000);
        document.close();
    }

3、我们来看一下生成的pdf中的信息如何显示的:

我们发现这里面的信息,已成功的被修改了。

4、读取相关信息:

PdfReader reader = new PdfReader(destinationFolder + "stamping1_1.pdf");
        PdfDocument document = new PdfDocument(reader);
        assertEquals("Rebuilt", false, reader.hasRebuiltXref());
        PdfDictionary trailer = document.getTrailer();
        PdfDictionary info = trailer.getAsDictionary(PdfName.Info);
        PdfString creator = info.getAsString(PdfName.Creator);
        System.out.println(creator.toString());
        System.out.println(info.toString());
        System.out.println(info.getAsString(PdfName.Title));
        System.out.println(info.getAsString(PdfName.Producer));
        assertEquals("iText 7", creator.toString());
        byte[] bytes = document.getPage(1).getContentBytes();
        assertEquals("%Hello World\n", new String(bytes));
        String date = document.getDocumentInfo().getPdfObject().getAsString(PdfName.ModDate).getValue();
        Calendar cl = PdfDate.decode(date);
        double diff = DateTimeUtil.getUtcMillisFromEpoch(null) - DateTimeUtil.getUtcMillisFromEpoch(cl);
        String message = "Unexpected creation date. Different from now is " + (float) diff / 1000 + "s";
        assertTrue(message, diff < 5000);
        document.close();

我们会发现Console都输出来了。

猜你喜欢

转载自blog.csdn.net/jwbabc/article/details/142855569