PDFファイルをPDF/Aに変換する

Aspose.PDFを使用すると、PDFファイルをPDF/A準拠のPDFファイルに変換できます。その前に、ファイルを検証する必要があります。この記事ではその方法を説明します。

PDF/A準拠の検証にはAdobe Preflightを使用していることに注意してください。市場のすべてのツールは、PDF/A準拠の「表現」を独自に持っています。参考のためにPDF/A検証ツールに関するこの記事をご覧ください。Aspose.PDFが生成するPDFファイルを確認するために、Adobe製品を選択しました。なぜなら、AdobeはPDFに関連するすべての中心にいるからです。

PDFをPDF/A準拠のファイルに変換する前に、validateメソッドを使用してPDFを検証してください。 検証結果はXMLファイルに保存され、その結果もconvertメソッドに渡されます。変換できない要素に対するアクションをConvertErrorAction列挙で指定することもできます。

PDFからPDF/A_1bへの変換

以下のコードスニペットは、PDFファイルをPDF/A-1b準拠のPDFに変換する方法を示しています。

public void convertPDFtoPDFa1b() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/A準拠ドキュメントに変換
        // 変換プロセス中に検証も行われます
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");
        document.convert(logFileName.toString(), PdfFormat.PDF_A_1B, ConvertErrorAction.Delete);

        // 出力ドキュメントを保存
        document.save(pdfaFileName.toString());
    }

ドキュメントの検証のみを行うには、次のコード行を使用します:

public void ValidatePDF_A_1B() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/A準拠のドキュメントを検証する

        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        if (document.validate(logFileName.toString(), PdfFormat.PDF_A_1B)){
            resultMessage.setText("ドキュメントは有効です");
        }
        else {
            resultMessage.setText("ドキュメントは無効です");
        }
    }

PDFからPDF/A_3bへの変換

    public void convertPDFtoPDFa3b() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/A準拠のドキュメントに変換する
        // 変換プロセス中に検証も行われます
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_3B, ConvertErrorAction.Delete);

        // 出力ドキュメントを保存する
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDFからPDF/A_3aへの変換

public void convertPDFtoPDFa3a() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/Aに準拠したドキュメントに変換
        // 変換プロセス中に、検証も行われます
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_3A, ConvertErrorAction.Delete);

        // 出力ドキュメントを保存
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDFからPDF/A_2aへの変換

public void convertPDFtoPDFa2a() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/Aに準拠したドキュメントに変換
        // 変換プロセス中に、検証も行われます
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_2A, ConvertErrorAction.Delete);

        // 出力ドキュメントを保存
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDF to PDF/A_3U Conversion

 public void convertPDFtoPDFa3u() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/Aに準拠したドキュメントに変換する
        // 変換プロセス中に、検証も行われる
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");

        document.convert(logFileName.toString(), PdfFormat.PDF_A_3U, ConvertErrorAction.Delete);

        // 出力ドキュメントを保存する
        try {
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }

PDF/A-3を作成しXMLファイルを添付

Aspose.PDF for Android via Javaは、PDFファイルをPDF/A形式に変換する機能を提供し、PDFドキュメントにファイルを添付する機能もサポートしています。 ファイルをPDF/A準拠形式に添付する必要がある場合は、com.aspose.pdf.PdfFormat列挙からPDF_A_3Aの値を使用することをお勧めします。PDF/A_3aは、PDF/A準拠ファイルに任意のファイル形式を添付できる形式です。ただし、ファイルを添付した後は、メタデータを修正するために再度Pdf-3a形式に変換する必要があります。以下のコードスニペットをご覧ください。

 public void convertPDFtoPDFa3u_attachXML() {
        // ドキュメントを開く
        try {
            document = new Document(inputStream);
        } catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }

        // PDF/A準拠のドキュメントに変換
        // 変換プロセス中に検証も行われます
        File logFileName = new File(fileStorage,"PDF-to-PDFA-log.xml");
        File pdfaFileName = new File(fileStorage,"PDF-to-PDFA.pdf");
        File attachment = new File(fileStorage,"sample.xml");

        // 出力ドキュメントを保存
        try {
            // XMLファイルを読み込む
            FileSpecification fileSpecification = new FileSpecification(attachment.toString(), "サンプルXMLファイル");
            // ドキュメントの添付ファイルコレクションに添付ファイルを追加
            document.getEmbeddedFiles().add(fileSpecification);
            document.convert(logFileName.toString(), PdfFormat.PDF_A_3B, ConvertErrorAction.Delete);
            document.save(pdfaFileName.toString());
        }
        catch (Exception e) {
            resultMessage.setText(e.getMessage());
            return;
        }
        resultMessage.setText(R.string.success_message);
    }