1. 产品
  2.   PDF格式
  3.   C++
  4.   PDF-Writer
 
  

通过开源 C++ API 生成 PDF

用于创建、编辑、操作和解析 PDF 文件的开源 C++ 库。

什么是 PDF 编写器?

PDF-Writer 是一个开源 C++ 库,完全支持创建、编辑、操作和解析 PDF 文件以及流。该库是使用生成 PDF 文件的主要“一次性”方法开发的。这就是为什么不管文件有多大,它都能快速运行并使用低内存。因此,最好创建小的 PDF 文件或生成较大的 PDF 文档。

向 PDF 添加内容始终非常重要,并且可以帮助开发人员生成自定义 PDF。该库支持处理 PDF 文件的几个重要功能,例如创建 PDF 页面、用于绘图内容的 PDF 运算符、JPG 或 PNG 和 TIFF 图像嵌入、修改 PDF、合并或拆分 PDF、渲染 PDF 文件、从 PDF 中提取数据、Unicode 文本支持、TrueType 和 OpenType 字体支持等等。

Previous Next

PDF-Writer 入门

构建库和示例应用程序的推荐方法是使用 CMake。您可以从 CMake 网站获得它。该库依赖于 Zlib、LibTiff、LibJpeg、FreeType 和 LibPng。这意味着在链接上下文中使用 PDF 库之前,您也应该编译它们。

也可以手动安装;直接从 GitHub 存储库下载最新版本文件。

通过 C++ 生成和修改 PDF

软件开发人员可以使用 PDF-Writer API 在他们自己的 C++ 应用程序中生成新的 PDF 文件。该库还方便开发人员根据自己的需要进行修改。您可以轻松嵌入 JPG、PNG 和 TIFF 图像,定义可重用对象,轻松嵌入现有 PDF 页面和文本。您可以使用现有的 PDF 页面,方法是将它们作为页面附加到 PDF 中,或者将它们用作部分以包含在新创建页面的图形中。通过使用以下步骤,您可以轻松生成 PDF。

用 C++ 生成 PDF

  1. 创建 PDFWriter 对象的实例
  2. 打开 PDF 文件进行写作
  3. 现在继续向 PDF 添加内容。
  4. 保存 PDF 文档

C++ 中的 PDF 生成

 // Create an instance of the PDFWriter objec
PDFWriter pdfWriter;
// Open a PDF file for writing
pdfWriter.StartPDF("c:\\myFile.pdf",ePDFVersion13);
// ...add content to PDF file...
pdfWriter.EndPDF();
        

将新页面添加到 PDF 文档

使用 PDF-Writer 库,可以在 PDF 文档中添加新页面并设置其尺寸。它非常简单,只需几行 C++ 代码即可将新页面添加到 PDF 文件中。该库还使开发人员能够修改现有页面或删除页面。也可以将内容添加到已创建的 PDF 页面。

在 PDF 文档中嵌入图像

PDF-Writer 库支持嵌入 TIFF、PNG 和 JPG 图像以及 PDF 页面。有适用于任何图像类型的高级方法。除此之外,还有一些用于图像高级用法的低级方法。它通过本机 DCT 解码器提供对 JPG 图像的支持,通过使用 LibPng 解码的 PNG 和 TIFF 图像通过在 LibTiff 的帮助下进行编码/解码。

通过 C++ 在 PDF 中嵌入图像

 pdfWriter.StartPDF("HighLevelImages.PDF",ePDFVersion13);
PDFPage* page = new PDFPage();
page->SetMediaBox(PDFRectangle(0,0,595,842));
PageContentContext* cxt = pdfWriter.StartPageContentContext(page);
cxt->DrawImage(10,10,"soundcloud_logo.jpg"));
pdfWriter.EndPageContentContext(cxt);
pdfWriter.WritePageAndRelease(page);
pdfWriter.EndPDF();
        

加入各种 PDF 文档

使用开源 PDF 组合器 API,用户只需几行代码即可快速组合多个 PDF 文档,而无需任何外部依赖。 PDF-Writer 使软件开发人员能够从现有的 PDF 文件生成全新的 PDF 文档。它可以帮助用户更轻松地存储和查看 PDF 文档。

通过 C++ 合并 PDF 页面内容

 PDFPage* page = new PDFPage();
page->SetMediaBox(PDFRectangle(0,0,595,842));
PDFPageRange singlePageRange;
singlePageRange.mType = PDFPageRange::eRangeTypeSpecific;
singlePageRange.mSpecificRanges.push_back(ULongAndULong(0,0));
pdfWriter.MergePDFPagesToPage(page,"C:\\Other2PagePDF.PDF",singlePageRange);
pdfWriter.WritePageAndRelease(page);
        
 中国人