PDF/A(Portable Document Format Archivable)は、保存用のファイル形式です。文書の保存期間に関わらず、文書の詳細を保存し、まったく同じように再現することができます。時には、長期的な文書アーカイブの目的で、PDFをPDF/Aに変換する必要があるかもしれません。この記事では、無料のFree Spire.PDF for Javaを使用してPDFをPDF/Aに、またはPDF/AをPDFに変換する方法を説明します。
【依存関係の追加】
この方法は、無料のFree Spire.PDF for Javaが必要ですので、先にjarファイルをインポートしてください。
1. Maven
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.free</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
2. 公式サイトよりJarファイルをダウンロード
まず、Free Spire.PDF for Java の公式サイトよりzipファイルをダウンロードします。zipファイルを解凍し、libフォルダの下にあるSpire.Pdf.jarファイルを依存関係としてプロジェクトにインポートしてください。
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() メソッドでドキュメントをPdf/A-1aに変換します。
- PdfStandardsConverter.toPdfA1B() メソッドを使用して、ドキュメントをPdf/A-1bに変換します。
- PdfStandardsConverter.toPdfA2A() メソッドを使用して、ドキュメントをPdf/A-2aに変換します。
- PdfStandardsConverter.toPdfA2B() メソッドを使用して、ドキュメントをPdf/A-2bに変換します。
- PdfStandardsConverter.toPdfA3A() メソッドを使用して、ドキュメントをPdf/A-3aに変換します。
- PdfStandardsConverter.toPdfA3B() メソッドを使用して、ドキュメントをPdf/A-3bに変換します。
Java
import com.spire.pdf.conversion.PdfStandardsConverter;
public class convertPdfToPdfA {
public static void main(String[] args) {
//PdfStandardsConverterクラスのインスタンスを生成し、PDF文書を読み込む
PdfStandardsConverter converter = new PdfStandardsConverter("PDF.pdf");
//PDFドキュメントをPdfA1Aに変換する
converter.toPdfA1A("PdfA1A.pdf");
//PDFドキュメントをPdfA1Bに変換する
converter.toPdfA1B("PdfA1B.pdf");
//PDFドキュメントをPdfA2Aに変換する
converter.toPdfA2A( "PdfA2A.pdf");
//PDFドキュメントをPdfA2Bに変換する
converter.toPdfA2B("PdfA2B.pdf");
//PDFドキュメントをPdfA3Aに変換する
converter.toPdfA3A("PdfA3A.pdf");
//PDFドキュメントをPdfA3Bに変換する
converter.toPdfA3B("PdfA3B.pdf");
}
}
PDF/AをPDFに変換する
PDFと比較して、PDF/Aは、JavaScript、オーディオおよびビデオのコンテンツ、暗号化など、長期のアーカイブに適さないいくつかの機能を禁止しています。そのため、制限されている機能の一部を実行するために、PDF/A文書を通常のPDF文書に変換する必要がある場合があります。
以下の手順は、PDF/A文書を通常のPDF文書に変換する方法を示しています。
- PdfDocument クラスのインスタンスを生成します。
- PdfDocument.loadFromFile() メソッドを使用してPDF/Aドキュメントをロードします。
- PdfNewDocument クラスのインスタンスを作成し、新しいPDFファイルを作成します。
- PdfNewDocument.setCompressionLevel() メソッドを使用して、新しいPDFドキュメントの適合性レベルを PdfCompressionLevel.None として設定します。
- PDF/A ドキュメント内のすべてのページをループします。
- PdfNewDocument.getPages().add() メソッドを使用して、PDF/A ドキュメントのページと同じサイズのページを新しく作成されたPDFドキュメントに追加します。
- PDF/A 文書のページからテンプレートを作成し、そのテンプレートを PdfPageBase.createTemplate().draw() メソッドを用いて新しいPDF文書のページに描画します。
- PdfDocument.save() メソッドを用いて、結果文書を保存します。
Java
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) {
//PdfDocument クラスのインスタンスを作成する
PdfDocument doc = new PdfDocument();
//PDF/Aドキュメントを読み込む
doc.loadFromFile("PdfA1A.pdf");
//PdfNewDocumentクラスのインスタンスを作成する
PdfNewDocument newDoc = new PdfNewDocument();
//新しいPDF文書の準拠レベルを「None」に設定する
newDoc.setCompressionLevel(PdfCompressionLevel.None);
//PDF/A文書内の全ページをループする
for (PdfPageBase page : (Iterable<PdfPageBase>)doc.getPages())
{
Dimension2D size = page.getSize();
//新しいPDF文書にページを追加する
PdfPageBase p = newDoc.getPages().add(size, new PdfMargins(0));
//PDF/A 文書のページからテンプレートを作成し、新しい PDF 文書のページに描画する
page.createTemplate().draw(p, 0, 0);
}
//結果ドキュメントを保存する
newDoc.save("通常のPDF.pdf");
}
}
この記事では、PDFとPDF/Aの相互変換の詳細な手順についてご紹介します。PDF文書の変換に関するより詳しい情報は、Spire.PDF Forumに移動します。