跳至页脚内容
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. 选择项目类型:从模板新建 窗口中,选择 控制台应用程序 然后点击 Go。 选择 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 库在 C++ 中将标准 PDF 文档转换为 PDF/A 格式。 PDF/A 合规性确保内容的保存和可访问性,使其非常适合存档。

IronPDF 还支持将 HTML、图像和 Word 文档等各种格式转换为 PDF 文件。 有关更多信息,请访问此 IronPDF 文档页面

IronPDF 提供 免费试用版 IronPDF,以测试其在商业生产中的功能。 从主页直接下载 IronPDF

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。