跳過到頁腳內容
PDF工具

如何在C++中將PDF轉換為PDFA

可攜式文件格式 (PDF) 一直是跨平台共享文件的首選格式。 然而,隨著數字檔案保存的重要性增加,需求逐漸轉向使用一種標準化格式,以確保文件的長期保存和可訪問性。 PDF/A (PDFA) 格式專門為此目的設計,提供穩定且自包含的格式,適合保存檔案。

了解 PDF/A

PDF/A 是一種通過 ISO 標準化的 PDF 變體,旨在隨時間推移保存文件,維持內容的可訪問性和完整性。 與普通的 PDF 文件相比,PDF/A 文件具有特定的限制,確保其堅固性和自給自足性。

本文將指導您使用 C++ 中的 QPDF 庫將 PDF 文檔轉換為 PDF/A 格式的過程。 QPDF 是一個強大的 C++ 庫,使開發者能以程式編寫的方式管理和轉換 PDF 文檔,包含 PDF 到 PDF/A 的轉換,僅需幾行代碼即可完成。

QPDF C++ 庫

QPDF 是一個 C++ 庫和命令行工具,設計用於支援處理、轉換和解析 PDF 文件。 它允許開發者以程式編寫的方式訪問和操作 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. 點擊 確定 以關閉 構建選項 對話框。

此外,您需要在鏈接階段與 QPDF 庫建立連接。 按照以下步驟進行:

  1. 構建選項 對話框中,轉到 鏈接器設置 分頁。
  2. 鏈接庫 下,點擊 添加,然後瀏覽到包含 QPDF 庫文件(通常在 Windows 中有 .a.lib 文件擴展名)的目錄。
  3. 再次點擊 添加,輸入 QPDF 庫的名稱(例如,libqpdf.aqpdf.lib)。
  4. 點擊 確定 關閉 構建選項 對話框。

將 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 庫 是一個 .NET PDF 庫,提供全面的功能來處理 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) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。