Java-将PDF转换为PDF/A或PDF/A到PDF
#java #pdf #pdfa

pdf/a(便携式文档格式可存档)是档案文件格式。它可以保留文档的详细信息,并以完全相同的方式复制该文档的细节,无论文档已存储了多长时间。有时,出于长期文档归档目的,您可能需要将PDF转换为PDF/A。在本文中,我将演示如何使用Java 。

添加依赖项

为了执行PDF和PDF/A之间的转换,本文使用Spire.PDF for Java库。在编码之前,您需要将库的J​​AR文件包含在Java项目中作为依赖项。

方法1:如果您使用的是Maven,则可以通过将以下代码添加到项目的pom.xml文件中轻松导入JAR文件。

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.pdf</artifactId>
        <version>8.11.8</version>
    </dependency>
</dependencies>

方法2:如果您不使用Maven,则可以从the official website下载JAR文件,提取zip文件,然后在lib文件夹下方导入spire.pdf.jar文件中作为依赖。

使用Java将PDF转换为PDF/A

spire.pdf for Java支持将PDF转换为各种PDF/A格式,包括:

  • PDF/A-1A
  • PDF/A-1B
  • pdf/a-2a
  • PDF/A-2B
  • pdf/a-3a
  • PDF/A-3B

以下步骤演示了如何将PDF文档转换为上述PDF/A格式:

  • 初始化 pdfstandardsconverter 类的实例,然后将PDF文档的文件路径传递给类构造函数作为参数。
  • 使用 pdfstandardsconverter.topdfa1a()方法。
  • 使用 pdfstandardsconverter将文档转换为PDF/A-1B。 topdfa1b()方法。
  • 使用 pdfstandardsconverter将文档转换为PDF/A-2A。 topdfa2a()方法。
  • 使用 pdfstandardsconverter将文档转换为PDF/A-2B。 topdfa2b()方法。
  • 使用 pdfstandardsconverter将文档转换为PDF/A-3A。 topdfa3a()方法。
  • 使用 pdfstandardsconverter将文档转换为PDF/A-3B。 topdfa3b()方法。
import com.spire.pdf.conversion.PdfStandardsConverter;

public class ConvertPdfToPdfA {
    public static void main(String[] args) {
        //Initialize an instance of the PdfStandardsConverter class and pass the PDF file path to the class constructor as a parameter
        PdfStandardsConverter converter = new PdfStandardsConverter("Input.pdf");

        //Convert the PDF document to PdfA1A
        converter.toPdfA1A("output/ToPdfA1A.pdf");

        //Convert the PDF document to PdfA1B
        converter.toPdfA1B("output/ToPdfA1B.pdf");

        //Convert the PDF document to PdfA2A
        converter.toPdfA2A( "output/ToPdfA2A.pdf");

        //Convert the PDF document to PdfA2B
        converter.toPdfA2B("output/ToPdfA2B.pdf");

        //Convert the PDF document to PdfA3A
        converter.toPdfA3A("output/ToPdfA3A.pdf");

        //Convert the PDF document to PdfA3B
        converter.toPdfA3B("output/ToPdfA3B.pdf");
    }
}

转换后的PDF/A-1A文档:

Convert PDF to PDF/A in Java

使用Java将PDF/A转换为PDF

与PDF相比,PDF/A禁止某些不适合长期存档的功能,包括JavaScript,音频和视频内容,加密等。因此,您有时可能需要将PDF/A文档转换为正常PDF文档执行一些受限功能。

以下步骤演示了如何将PDF/A文档转换为普通PDF文档:

  • 初始化 pdfdocument的实例类。
  • 使用 pdfdocument.loadfromfile() methot。
  • 加载PDF/A文档
  • 初始化 pdfnewdocument的实例类创建一个新的PDF文件。
  • 将新PDF文档的符合度设置为pdfcompressionlevel.none使用 pdfnewdocument.setcompressionlevel() methot。
  • 遍历PDF/A文档中的所有页面。
  • 使用 pdfnewdocument.getpages()。add() methot。
  • 从PDF/A文档的页面创建模板,并使用 pdfpagebase.createTemplate()。draw(draw() methot。
  • 使用 pdfdocument.save()方法保存结果文档。
import com.spire.pdf.PdfCompressionLevel;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfNewDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfMargins;

import java.awt.geom.Dimension2D;

public class ConvertPdfAToPdf {
    public static void main(String[] args) {
        //Initialize an instance of the PdfDocument class
        PdfDocument doc = new PdfDocument();
        //Load the PDF/A document
        doc.loadFromFile("output/ToPdfA1A.pdf");

        //Initialize an instance of PdfNewDocument
        PdfNewDocument newDoc = new PdfNewDocument();
        //Set the conformance level of the new PDF document as none
        newDoc.setCompressionLevel(PdfCompressionLevel.None);

        //Loop through all pages in the PDF/A document
        for (PdfPageBase page : (Iterable<PdfPageBase>)doc.getPages())
        {
            Dimension2D size = page.getSize();
            //Add pages to the new PDF document
            PdfPageBase p = newDoc.getPages().add(size, new PdfMargins(0));
            //Create templates from the pages in the PDF/A document and draw them onto the pages in the new PDF document
            page.createTemplate().draw(p, 0, 0);
        }

        //Save the result document
        newDoc.save("NormalPdf.pdf");
    }
}

转换的普通PDF文档:

Convert PDF/A to Normal PDF in Java