pdf/a(便携式文档格式可存档)是档案文件格式。它可以保留文档的详细信息,并以完全相同的方式复制该文档的细节,无论文档已存储了多长时间。有时,出于长期文档归档目的,您可能需要将PDF转换为PDF/A。在本文中,我将演示如何使用Java 。
添加依赖项
为了执行PDF和PDF/A之间的转换,本文使用Spire.PDF for Java库。在编码之前,您需要将库的JAR文件包含在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文档:
使用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文档: