利用PDFLib生成PDF文檔

jopen 9年前發布 | 36K 次閱讀 PDFLib PDF工具包

本文代碼生成的PDF文檔效果圖

一、PDF介紹

PDF是Portable Document Format的縮寫,PDF文件格式是國際通用的電子文檔交換事實標準,被許多國家采用作為電子文檔交換。PDF文件可以在各種平臺下閱讀、編輯、發布。該文件格式支持字體、圖像、甚至任何附件的嵌入。您可以通過免費的Adobe Acrobat Reader來閱讀、編輯PDF文檔。

二、PDFLib介紹

PDFLib是用于創建PDF文檔的開發庫,提供了簡單易用的API,隱藏了創建PDF的復雜細節且不需要第3方軟件的支持。PDFLib庫對于個人是免費的,對于商業產品需要購買許可, 您可以到VC知識庫的工具與資源欄目下載:http://www.vckbase.com/tools/。

三、在VC++中使用PDFLib

本文例子中使用的PDFLib是4.0.2版本,與5.0版本差不多。5.0免費版本中有一個WWW.PDFLIB.COM的水印,4.0中沒有。

3.1 前期準備

建立工程后,將except.cpp,except.h,pdflib.cpp,pdflib.h,pdflib.dll,pdflib.lib拷貝到工程目錄。

3.2 編碼

3.2.1 添加對頭文件和庫的引用

#include "PDFLib.hpp"
#pragma comment(lib, "PDFLib.lib")

3.2.2生成PDF文檔的過程

生成PDF文檔的過程非常簡單,請看如下編碼:

int main(void)
{
 try
 {
  PDFlib pdf;
  // 設置兼容參數
  pdf.set_parameter("compatibility", "1.4"); // 兼容Acrobat 5
  // 打開文檔
  if(pdf.open("vckbase.pdf") == -1)
   throw("打開文件出錯!");
  // 設置文檔信息
  pdf.set_info("Creator", "PDF Creator");
  pdf.set_info("Author", "WangJun");
  pdf.set_info("Title", "Convert to PDF");
  pdf.set_info("Subject", "PDF Creator");
  pdf.set_info("Keywords", "vckbase.com");
  // 開始A4頁面
  pdf.begin_page(a4_width, a4_height);
  // 設置字體為12號宋體
  int font_song = pdf.findfont("STSong-Light", "GB-EUC-H", 0);
  pdf.setfont(font_song, 12);
  // 設置起始點
  pdf.set_text_pos(50, a4_height - 50);
  // 設置顏色為藍色
  pdf.setcolor("fill", "rgb", 0, 0, 1, 0);
  // 輸出文字
  pdf.show("VCKBASE.COM歡迎您!");
  pdf.setcolor("fill", "rgb", 0, 0, 0, 0);
  pdf.setfont(font_song, 24);
  pdf.continue_text("在線雜志");
  // 畫兩根綠線
  pdf.setcolor("stroke", "rgb", 0.24f, 0.51f, 0.047f, 0);
  pdf.moveto(50, a4_height - 80);
  pdf.lineto(a4_width - 50, a4_height - 80);
  pdf.moveto(50, a4_height - 78);
  pdf.lineto(a4_width - 50, a4_height - 78);
  pdf.stroke();
  // 填充一個藍色方框
  pdf.setcolor("fill", "rgb", 0.04f, 0.24f, 0.62f, 0);
  pdf.rect(50, 50, a4_width - 100, 70);
  pdf.fill();
  // 在指定位置輸出文字
  pdf.setcolor("fill", "rgb", 0, 1, 1, 0);
  pdf.setfont(font_song, 16);
  pdf.show_xy("版權所有 VCKBASE", a4_width - 280, 60);
  // 打開并顯示一個圖像
  int img = pdf.open_image_file("jpeg", "vckbase.jpg", "", 0);
  pdf.place_image(img, 200, 400, 1);
  pdf.close_image(img);
  // 添加附件
  pdf.attach_file(a4_width - 50, 0, 0, a4_height - 150,
    "vckbase.zip", "VCKBASE", "wj", "zip", "paperclip");
  // 結束本頁
  pdf.end_page();
  // 關閉PDF文件
  pdf.close();
 }
 catch(PDFlib::Exception &ex)
 {
  cerr << "錯誤信息:" << ex.get_message() << endl;
  return -1;
 }
 catch(char *pStrErr)
 {
  cerr << pStrErr << endl;
  return -1;
 }
 catch(...)
 {
  cerr << "發生未知異常!" << endl;
  return -1;
 }
return 0;
}

PDFLIB還有許多功能,比如書簽、PDF導入等功能,具體可以參考PDFLIB函數手冊(可以到VC知識庫中下載pdflib5.0,里面包含了該手冊)。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!