1
1

More than 1 year has passed since last update.

JavaでPDFからPDF/A、PDF/AからPDFに変換する方法

Last updated at Posted at 2022-12-09

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に移動します。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1