フッターコンテンツにスキップ
PDF ツール

C++でPDFをPDFAに変換する方法

ポータブルドキュメントフォーマット(PDF)は、さまざまなプラットフォームでドキュメントを共有するための定番フォーマットです。 しかし、デジタルアーカイブの重要性が高まる中で、長期的な保存とアクセスを確保する標準化されたフォーマットでドキュメントをアーカイブする必要性が高まっています。 PDF/A (PDFA)フォーマットは、この目的に特化して設計されており、アーカイブに適した安定した自己完結型のフォーマットを提供します。

PDF/Aの理解

PDF/Aは、ISO標準化されたPDFのバリアントで、コンテンツのアクセスと整合性を維持しながら、ドキュメントを時間とともに保存するように設計されています。 通常のPDFファイルとは異なり、PDF/Aファイルにはその堅牢性と自律性を保証する具体的な制限があります。

この記事では、QPDFライブラリを使用してPDFドキュメントをPDF/Aフォーマットに変換するプロセスを案内します。 QPDFは強力なC++ライブラリで、開発者がPDFドキュメントをプログラムで管理および変換(PDFからPDF/Aへの変換を含む)できるようにし、わずか数行のコードで実行できます。

QPDF C++ライブラリ

QPDFは、PDFファイルの操作、変換、解析をサポートするC++ライブラリおよびコマンドラインツールです。 開発者がPDFファイルのコンテンツにプログラム的にアクセスおよび操作できるようにし、広範なサポートを提供します。 QPDFは、暗号化、復号、線形化、最適化、PDF/A準拠を含むさまざまな機能を提供するオープンソースプロジェクトです。

前提条件

始める前に、次の設定を確認してください:

  1. Code::Blocks IDE: 公式サイトからCode::Blocksをダウンロードしてインストールします (Code::Blocks公式サイト)。
  2. QPDFライブラリ: QPDFウェブサイトからお使いのオペレーティングシステム向けの最新バージョンのQPDFライブラリをダウンロードします (QPDF公式サイト)。

PDFからPDF/Aプロジェクトの作成

  1. Code::Blocksを開く: コンピュータでCode::Blocks IDEを起動します。
  2. 新しいプロジェクトを作成する: 上部メニューのファイルをクリックし、新規を選択してからプロジェクトを選びます。
  3. プロジェクトタイプを選択: テンプレートから新規ウィンドウでコンソールアプリケーションを選び、実行をクリックします。 C/C++言語を選択し、次へをクリックします。
  4. プロジェクトの詳細を入力: プロジェクトタイトルフィールドにプロジェクト名を入力します(例:「PDFtoPDFA」)。 プロジェクトファイルの保存先を選び、次へをクリックします。
  5. コンパイラを選択: コンパイラを選び、必要に応じてリストから手動で選択します。完了をクリックします。

プロジェクトにQPDFを追加する

Code::BlocksにQPDFヘッダーファイルを含める手順は次のとおりです:

  1. メニューのプロジェクトをクリックします。
  2. コンテキストメニューからビルドオプションを選択します。
  3. ビルドオプションダイアログで、検索ディレクトリタブに移動します。
  4. コンパイラタブで追加ボタンをクリックし、QPDFヘッダーファイルが含まれるディレクトリ(通常はincludeフォルダーにあります)を参照します。
  5. 次に、リンクタブで追加ボタンをクリックし、libbinディレクトリを含めます。
  6. ビルドオプションダイアログを閉じるには、OKをクリックします。

さらに、リンクフェーズ中にQPDFライブラリとの接続を確立する必要があります。 次の手順に従います。

  1. ビルドオプションダイアログで、リンカ設定タブに移動します。
  2. リンクライブラリの下で追加をクリックし、QPDFライブラリファイルが含まれるディレクトリ(通常Windowsでは.aまたは.libのファイル拡張子を持つ)を参照します。
  3. 追加をクリックし、QPDFライブラリの名前を入力します(例:libqpdf.aまたはqpdf.lib)。
  4. ビルドオプションダイアログを閉じるには、OKをクリックします。

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

必要なヘッダーファイルを含める

#include <iostream>
#include <qpdf/QPDF.hh>
#include <qpdf/QPDFWriter.hh>

// The above code includes necessary header files for standard input/output operations and QPDF functionalities.
#include <iostream>
#include <qpdf/QPDF.hh>
#include <qpdf/QPDFWriter.hh>

// The above code includes necessary header files for standard input/output operations and QPDF functionalities.
C++

入力および出力ファイルのパスを設定する

main関数(C++プログラムの開始ポイント)で入力および出力ファイルのパスを設定します:

std::string input_pdf_path = "input.pdf";
std::string output_pdf_a_path = "output.pdfa";

// These lines declare and initialize strings to store the paths of the input PDF and the output PDF/A file.
std::string input_pdf_path = "input.pdf";
std::string output_pdf_a_path = "output.pdfa";

// These lines declare and initialize strings to store the paths of the input PDF and the output PDF/A file.
C++

PDFファイル用にQPDFオブジェクトを作成する

QPDF input_pdf;
input_pdf.processFile(input_pdf_path.c_str());

// Create a QPDF object for the input PDF and process the file to prepare it for conversion.
QPDF input_pdf;
input_pdf.processFile(input_pdf_path.c_str());

// Create a QPDF object for the input PDF and process the file to prepare it for conversion.
C++

PDF/Aファイルを書き込むためのQPDFWriterオブジェクトを作成する

QPDFWriter writer(input_pdf, output_pdf_a_path.c_str());

// This creates a QPDFWriter object to handle writing the converted PDF/A file.
QPDFWriter writer(input_pdf, output_pdf_a_path.c_str());

// This creates a QPDFWriter object to handle writing the converted PDF/A file.
C++

PDF/A準拠を設定しPDFドキュメントを変換する

writer.setQDFMode(true);
writer.write();

// Set the QPDFWriter to operate in PDF/A compliant mode and write the output file.
writer.setQDFMode(true);
writer.write();

// Set the QPDFWriter to operate in PDF/A compliant mode and write the output file.
C++

出力

出力ファイルは編集不可で、PDF/Aに準拠しています:

C++でPDFをPDF/Aに変換する方法:図2

C#でPDFをPDF/Aに変換する

IronPDFライブラリは、PDFドキュメントを操作するための包括的な機能を提供する.NET PDFライブラリです。 C#またはVB.NETを使用して、開発者がPDFドキュメントを作成、変更、および変換できるようにします。 ユーザーはIronPDFを使用して、HTML、ASPX、Wordドキュメント(.doc)、または画像から動的にPDFファイルを生成し、グラフ、表、および画像データ(JPG、PNG形式など)のようなリッチな要素を取り入れることができます。 既存のPDFファイルのページをマージ、分割、編集するだけでなく、テキスト抽出とPDFデータのコンテンツ操作も可能にします。

IronPDFはPDFをPDF/A-3b形式の標準に変換する機能もわずか数行のコードで提供します。 次のコードはこのタスクを達成するのに役立ちます。

using IronPdf;

// Create a PdfDocument object or open any PDF file
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");

// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3);

// The above C# code demonstrates the use of IronPDF to convert a PDF document to a PDF/A-3b compliant file.
using IronPdf;

// Create a PdfDocument object or open any PDF file
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");

// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3);

// The above C# code demonstrates the use of IronPDF to convert a PDF document to a PDF/A-3b compliant file.
Imports IronPdf

' Create a PdfDocument object or open any PDF file
Private pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")

' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3)

' The above C# code demonstrates the use of IronPDF to convert a PDF document to a PDF/A-3b compliant file.
$vbLabelText   $csharpLabel

結論

この記事では、QPDFライブラリを使用して標準のPDFドキュメントをPDF/A形式にC++で変換する方法を案内します。 PDF/A準拠は、コンテンツの保存とアクセスを保証し、アーカイブに理想的です。

IronPDFはHTML、画像、WordドキュメントをPDFファイルに変換するさまざまなフォーマット変換もサポートしています。 詳細情報については、このIronPDFドキュメントページを訪問してください。

IronPDFは、商業生産のために機能をテストするためのIronPDFの無料トライアルを提供しています。 IronPDFをホームページから直接ダウンロード

Curtis Chau
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。