PDFLib中文显示及去水印

最近开始接触PDFLib,随手记录下学习历程。使用PDFLib,新手最棘手的问题就是去除水印和显示中文字符。

1.去除水印

      最简单也是最直接的方法下载破解版的PDFLib,下载PDFLib-9.1.2-win32。解压缩后,将pdflib中的pdflib.dll pdflib.lib pdflib.h拷贝到项目文件中。并且在VS项目属性->附加依赖项中加入pdflib.lib

2.显示中文字符

    PDFlib-CMap为了用PDFlib创建中文,日文或韩文(CJK)文本输出并使用其中一个预定义的CMaps。下载PDFlib-CMap-3.0,并解压缩到任何路径,但是必须在使用时配置CMap文件路径,

eg:    p.set_option("SearchPath=/path/to/resource/cmap"); or   PDF_set_option(p,"SearchPath=/path/to/resource/cmap")

 使用最常用的宋体STSong-Light(PDFLib自带的中文字体),解码方式是 GB-EUC-H(在cmap中)

代码:

#include 
#include
#include "pdflib.h"

int main(int argc, char *argv[])

{

	PDF *pdf = PDF_new();
	// 打开文档
	if (PDF_begin_document(pdf, "d://hello.pdf", 0, "") == -1)
	{
		printf("Error: %sn", PDF_get_errmsg(pdf));
		return(0);
	}
	PDF_TRY(pdf)
	{
		PDF_set_option(pdf, "SearchPath=./PDFlib-CMap-3.0/resource/cmap");//配置cmap
		PDF_set_info(pdf, "Creator", "PDF Creator");
		PDF_set_info(pdf, "Title", "Convert to PDF");
		PDF_begin_page_ext(pdf, a4_width, a4_height, "");// 开始A4页面
		int nHeight = a4_height;//当前高度
		int font_song = PDF_load_font(pdf, "STSong-Light", 0, "GB-EUC-H", "");
		PDF_setfont(pdf, font_song, 34);// 设置字体为34号宋体
		// 设置起始点
		nHeight -= 50;
		PDF_set_text_pos(pdf, 50, nHeight);
		// 设置颜色为蓝色
		PDF_setcolor(pdf, "fill", "rgb", 0, 0, 1, 0);
		static const char *DFTitle[] = { "你好!", "中国。" };
		for (int i = 0; i < 2; i++)
		{
			PDF_set_text_pos(pdf, 100* i, nHeight-40*i);//字体坐标
			PDF_show(pdf, DFTitle[i]);
		}
		 
	}
	PDF_CATCH(pdf)
	{
		printf("PDFlib exception occurred in sample:/n");

		printf("[%d] %s: %s/n",

			PDF_get_errnum(pdf), PDF_get_apiname(pdf), PDF_get_errmsg(pdf));

	}
	PDF_end_page_ext(pdf, "");// 结束本页
	PDF_end_document(pdf, "");// 关闭PDF文件
	PDF_delete(pdf);
	 
	return 0;

结果截图:

PDFLib中文显示及去水印_第1张图片

彩蛋:

     接下来就可以开始PDFLib正式学习,根据PDFLib API查看函数接口及功能,根据官方代码例子可以实现基本功能(划重点: PDFLib API和官方代码例子都能在下载的PDFlib中找到)。这样就很快进行了学习,高效且准确。

你可能感兴趣的:(PDFLib中文显示及去水印)