将多个 PDF 文档合并为一个 PDF 文件可以帮助您整合文档内容,让您更轻松地阅读、打印和共享文件。合并后,您只需要处理一个而不是多个文件。在本文中,您将学习如何使用 Spire.PDF for C++ 在 C++ 中将多个 PDF 文件合并为一个 PDF。
安装 Spire.PDF for C++
有两种方法可以将 Spire.PDF for C++ 集成到您的应用程序中。一种方法是通过 NuGet 安装它,另一种方法是从我们的网站下载包并将库复制到您的程序中。通过 NuGet 安装更简单,更推荐使用。您可以通过访问以下链接找到更多详细信息。
如何将 Spire. PDF for C++ 集成到 C++ 程序中
在 C++ 中将多个 PDF 文档合并为一个 PDF 文件
Spire.PDF for C++ 提供了一个静态方法 - PdfDocument::MergeFiles(std::vector<LPCWSTR_S> inputFiles) 使您能够轻松地将多个 PDF 文件合并为一个 PDF 文件。以下是详细步骤:
- 将输入 PDF 文件的路径放入向量中。
- 使用 PdfDocument::MergeFiles(std::vector<LPCWSTR_S> inputFiles) 方法合并向量中路径指定的 PDF 文件。
- 指定输出文件路径。
- 使用 PdfDocumentBase->Save() 方法保存结果 PDF 文件。
- C++
#include "Spire.Pdf.o.h"
using namespace Spire::Pdf;
using namespace std;
using namespace Spire::Common;
int main() {
//将输入PDF文件的路径放入矢量
std::vector<LPCWSTR_S> files = { L"Input\\文件_1.pdf", L"Input\\文件_2.pdf", L"Input\\文件_3.pdf" };
//合并向量中路径指定的 PDF 文件
PdfDocumentBase* doc = PdfDocument::MergeFiles(files);
//指定输出文件路径
wstring outputFile = L"Output\\合并PDF.pdf";
//保存结果 PDF 文件
doc->Save(outputFile.c_str(), FileFormat::PDF);
doc->Close();
}
在 C++ 中合并来自流的多个 PDF 文件
您可以使用 PdfDocument::MergeFiles(std::vector< Stream*> streams) 方法将多个 PDF 流合并为一个 PDF。以下是详细步骤:
- 将输入的 PDF 文件读入流。
- 将流放入向量中。
- 使用 PdfDocument::MergeFiles(std::vector< Stream*> streams) 方法合并 PDF 流。
- 使用 PdfDocumentBase->Save() 方法保存结果 PDF 文件。
- C++
#include "Spire.Pdf.o.h"
using namespace Spire::Pdf;
using namespace std;
using namespace Spire::Common;
int main() {
//将输入的 PDF 文件读入流
Stream* stream1 = new Stream(L"Input\\文件_1.pdf");
Stream* stream2 = new Stream(L"Input\\文件_2.pdf");
Stream* stream3 = new Stream(L"Input\\文件_3.pdf");
//将流放入向量中
std::vector<Stream*> streams = { stream1, stream2, stream3 };
//合并 PDF 流
PdfDocumentBase* doc = PdfDocument::MergeFiles(streams);
//指定输出文件路径
wstring outputFile = L"Output\\合并PDF.pdf";
//保存结果 PDF 文件
doc->Save(outputFile.c_str(), FileFormat::PDF);
doc->Close();
}
在 C++ 中将选定的 PDF 文件页面合并为单个 PDF 文件
您可以使用 PdfDocument->InsertPage(PdfDocument ldDoc, int pageIndex) 或 PdfDocument->InsertPageRange(PdfDocument ldDoc, int startIndex, int endIndex) 方法将多个 PDF 文件的特定页面或一系列页面合并为单个 PDF 文件。 以下是详细步骤:
- 将输入 PDF 文件的路径放入向量中。
- 创建一个 PdfDocument 对象向量。
- 遍历向量中的路径。
- 使用 PdfDocument->LoadFromFile() 方法加载由路径指定的 PDF 文件。
- 初始化 PdfDocument 类的实例以创建新的 PDF 文档。
- 使用 PdfDocument->InsertPage(PdfDocument ldDoc, int pageIndex)或 PdfDocument->InsertPageRange(PdfDocument ldDoc, int startIndex, int endIndex) 方法将加载的 PDF 文件中的特定页面或一系列页面插入新 PDF。
- 使用 PdfDocument->SaveToFile() 方法保存结果 PDF。
- C++
#include "Spire.Pdf.o.h"
using namespace Spire::Pdf;
using namespace std;
using namespace Spire::Common;
int main() {
//将输入的 PDF 文件的路径放入向量中
std::vector<std::wstring> files = { L"Input\\文件_2.pdf", L"Input\\文件_4.pdf" };
//创建一个 PdfDocument 对象向量
std::vector<PdfDocument*> docs(files.size());
//遍历向量中的路径
for (int i = 0; i < files.size(); i++)
{
//加载路径指定的PDF文件
docs[i] = new PdfDocument();
docs[i]->LoadFromFile(files[i].c_str());
}
//新建一个 PDF 文档
PdfDocument* newDoc = new PdfDocument();
//将第一个 PDF 的指定页面插入新 PDF
newDoc->InsertPageRange(docs[0],0, 1);
//将第二个 PDF 的指定页面插入新 PDF
newDoc->InsertPage(docs[1], 0);
//指定输出文件路径
wstring outputFile = L"Output\\合并PDF文档.pdf";
//保存结果 PDF 文件
newDoc->SaveToFile(outputFile.c_str());
//关闭 PdfDocument 对象
newDoc->Close();
for (auto doc : docs)
{
doc->Close();
}
}
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。