使用PDFLib生成PDF文档(C语言版)--使用指导

2019-08-17 13:48

使用PDFLib生成PDF文档(C语言版)--使用指导

1. 基本环境

① 打开、关闭、文档信息设定:

新建PDFLib对象,PDF_new()

设定错误处理的方式,PDF_set_parameter(p, \, \),return标示当发生错误时直接从Lib函数中返回。 设定文档信息,PDF_set_value()

新建一个PDF文件,PDF_begin_document() 新建一个页面,PDF_begin_page_ext() 关闭一个页面,PDF_end_page_ext() 关闭PDF文件,PDF_end_document() 释放PDFLib对象,PDF_delete() 例外处理,PDF_TRY()和PDF_CATCH()

② 示例代码:

#include #include \

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

Example(); return 0;

}

int Example(void) {

PDF *p;

if ((p = PDF_new()) == (PDF *) 0){

printf(\ return(2); }

PDF_TRY(p) {

/* This means we must check return values of load_font() etc. */ PDF_set_parameter(p, \

if (PDF_begin_document(p, \ printf(\ return(2); }

/* This line is required to avoid problems on Japanese systems */

PDF_set_parameter(p, \ PDF_set_parameter(p, \

PDF_set_info(p, \ PDF_set_info(p, \ PDF_set_info(p, \

PDF_begin_page_ext(p, a4_width, a4_height, \

PDF_setcolor(p, \ PDF_rect(p, 250,250, 100, 50); PDF_fill(p);

PDF_end_page_ext(p, \ PDF_end_document(p, \ }

PDF_CATCH(p) {

printf(\ printf(\

PDF_get_errnum(p), PDF_get_apiname(p), PDF_get_errmsg(p));

PDF_delete(p); getchar(); return(2); }

PDF_delete(p); return 0; }

2. 文字输出

① 加载字体

使用PDF_load_font()函数。目前在Windows 平台下,似乎只能加载可以安

装到Windows系统中的字体。

如果加载已经安装到系统中的字体(在C:/windows/fonts文件夹下),可以直接通过字体的名字加载,如:

font = PDF_load_font(p, \ font = PDF_load_font(p, \, 0, \, \

也可以通过制定字体文件加载字体,如:

PDF_set_parameter(p, \\MKZ2=C://windows//fonts// MKZ2.ttf\

font= PDF_load_font(p, \

\和\是用于字体编码的方式,host日文系统下具体与代码页cp932等相关,中文系统下与cp936相关。Unicode与PDF所规定的CMAP文件相关,如:UniJIS-UCS2-H、EUC-H等的编码文件。因为字体已经安装

到了Windows系统中,具体的字体编码方式,操作系统能够自动处理,无需我们显式的指定。

加载字体是一件很耗费时间的工作,大概能占到整个处理的1/4左右。PDFLib已经作了些优化,当一个字体只要加载过一次,再次加载就会使用前面产生的字体句柄,不再重新生成。

PDFLIb加载字体时默认是嵌入的,这样会增大输出的PDF文件。好处是当文件被移动到其他系统上时,打开文件时不受字体的影响,否则,打开文件前需要先安装字体。我们这次的项目,生成的PDF文件需要用FTP转送到Solaris系统,并且要送入打印机,所以必须以嵌入方式加载的字体。

② 设置字体

使用PDF_setfont()函数,如:

PDF_setfont(p, font, 30);

30指的是字号,也就是字体的高度。但这个和系统的缩放比例相关。如果设字体前设定系统的缩放比例为2,实际输出的字体的高度为60个单位。PSEdit的字体的输出过程中,绝大部分采用的是变换系统坐标的方法来确定字体的大小,所以编程中使用了PDF_setfont(p, font, 1)的方式,即字体的大小为当前系统的缩放比例的值相同。

③ 文字输出

PDFLib的文字处理,较PostScript而言,加强了功能,增加了大量文字及段落等的处理。但本次PSEdit编程中,受于以前软件框架的限制,只使用了单字输出的功能PDF_info_textline(),尽管这个函数也能用于输出一个字符串。 PDF_info_textline函数有个选项列表,提供的功能相当丰富。基本上覆盖了对字体的所有的变化和变形。如:倾斜、旋转、缩放、着色、偏移以及指定字体等等。 ④ 文字阴影

采用在相互错开的位置上输出两次同样的字符,实现阴影。 ⑤ 空心字


使用PDFLib生成PDF文档(C语言版)--使用指导.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中国五大轴承产业基地概览 - 图文

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: