PDF 工具

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

Chipego
奇佩戈·卡林达
2023年11月14日
分享:

可攜式文件格式(PDF)一直是跨越各種平台分享文件的首選格式。 然而,隨著數位檔案保存的重要性日漸增加,對於以標準化格式存檔文件以確保長期保存和可訪問性的需求也與日俱增。 PDF/A(PDFA)格式專為此目的設計,提供一種穩定且自包含的格式,適合存檔。

了解 PDF/A

PDF/A 是一個經 ISO 標準化的 PDF 變體,旨在隨著時間的推移保留文件,以維持內容的可存取性和完整性。 與普通的 PDF 文件相比,PDF/A 文件具有特定的限制,以確保其穩定性和自給自足性。

本文將指導您使用 QPDF 庫在 C++ 中將 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 Library:從 QPDF 網站(QPDF Official Site)下載適用於您操作系統的最新版本 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. 然後,在Link頁籤中,點擊新增按鈕,並包括libbin目錄。

  6. 單擊OK以關閉構建選項對話框。

    此外,您需要在連結階段與 QPDF 庫建立連接。 請依照以下步驟操作:

  7. 構建選項對話框中,轉到鏈接器設置標籤。

  8. 鏈接庫下,點擊添加,然後瀏覽到包含 QPDF 庫文件的目錄(通常在 Windows 上具有.a.lib 文件擴展名)。

  9. 再次點擊新增,並輸入 QPDF 函式庫的名稱(例如,libqpdf.aqpdf.lib)。

  10. 單擊OK以關閉構建選項對話框。

將PDF轉換為PDF/A文件的步驟

包含必要的標頭檔案

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

這段代碼包含了用於 C++ 標準輸入/輸出(iostream)和 QPDF 庫的基本標頭文件。

設置輸入和輸出檔案的路徑

在主函數(C++ 程式的起點)中,設定輸入和輸出文件的路徑:

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

這兩行聲明並初始化了兩個類型為std::string的變數。 這些行聲明並初始化輸入 ("input.pdf") 和輸出 PDF/A ("output.pdfa") 路徑的變數。

輸入檔案

輸入文件是一個可編輯的表單:

如何在 C++ 中將 PDF 轉換為 PDF/A:圖 1

為 PDF 檔案創建 QPDF 物件

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

創建了一個名為input_pdfQPDF對象。 使用 processFile 函數處理 input_pdf 物件,將輸入檔案路徑作為參數傳遞。

建立QPDFWriter物件以寫入 PDF/A 檔案

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

已創建一個QPDFWriter對象writer來寫入輸出PDF/A文件。

設定 PDF/A 合規並轉換 PDF 文件

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

此程式碼通過對writer物件使用setQDFMode(true)來設置 PDF/A 遵從性。 write() 函式將 PDF 文件進行轉換,並將輸出儲存為 PDF/A 文件。

輸出

輸出文件是不可編輯且符合 PDF/A 標準的:

如何在 C++ 中將 PDF 轉換為 PDF/A:圖 2

在 C# 中將 PDF 轉換為 PDF/A

IronPDF Library 是一個 .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);
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);
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)
$vbLabelText   $csharpLabel

結論

本文將指導您如何使用 QPDF 庫將標準 PDF 文檔轉換為 PDF/A 格式的 C++ 轉換過程。 PDF/A 合規性確保了內容的保存和可访问性,使其成为归档的理想选择。

IronPDF還支持將各種格式轉換,如HTML、圖片和Word文件轉換為PDF檔案。 如需進一步的資訊,請造訪此IronPDF 使用說明頁面

IronPDF 提供IronPDF 的免費試用版,以測試其商業製作功能。 直接從首頁下載 IronPDF

Chipego
奇佩戈·卡林达
軟體工程師
Chipego 擁有天生的傾聽技能,這幫助他理解客戶問題,並提供智能解決方案。他在獲得信息技術理學學士學位後,于 2023 年加入 Iron Software 團隊。IronPDF 和 IronOCR 是 Chipego 專注的兩個產品,但隨著他每天找到新的方法來支持客戶,他對所有產品的了解也在不斷增長。他喜歡在 Iron Software 的協作生活,公司內的團隊成員從各自不同的經歷中共同努力,創造出有效的創新解決方案。當 Chipego 離開辦公桌時,他常常享受讀好書或踢足球的樂趣。
< 上一頁
如何在 Android 手機上查看 PDF 檔案
下一個 >
如何向 PDF 文件添加頁碼