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

上传人:p** 文档编号:1201916 上传时间:2024-11-24 格式:DOCX 页数:8 大小:21.07KB
下载 相关 举报
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第1页
第1页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第2页
第2页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第3页
第3页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第4页
第4页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第5页
第5页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第6页
第6页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第7页
第7页 / 共8页
使用PDFLib生成PDF文档(C语言版)--使用指导.docx_第8页
第8页 / 共8页
亲,该文档总共8页,全部预览完了,如果喜欢就下载吧!
资源描述

《使用PDFLib生成PDF文档(C语言版)--使用指导.docx》由会员分享,可在线阅读,更多相关《使用PDFLib生成PDF文档(C语言版)--使用指导.docx(8页珍藏版)》请在第壹文秘上搜索。

1、运用PDF1.ib生成PDF文档(C语言版)-运用指导运用PDF1.ib生成PDF文档(C语言版)一运用指导1.基本环境打开、关闭、文档信息设定:新建PDF1.ib对象,PDFnew()设定错误处理的方式,PDH_set_paranieter(p,errorpo1.icy,return),return标示当发生错误时干脆从1.ib函数中返回。设定文档信息,PDF_set_va1.ue()新建一个PDF文件,PDFbegindocument()新建一个页面,PDFbeginpageext()关闭一个页面,PDF_end_page_ext0关闭PDF文件,PDFenddocument()释放PDF

2、1.ib对象,PDFde1.ete()例外处理,PDFjRYO和PDF_CATCH()示例代码:inc1.udestdio.h#inc1.udepdf1.ib.hintmain(intargc,char*argv)Examp1.eO;return0;intExamp1.e(void)PDF*:if(p=PDE_new()=(PDF*)0)(printf(Cou1.dn,tcreatePDE1.ibobject(outofmemory)!/n);PDFTRY(p)returnva1.uesofPDFsetparameter(p,return(2);*Thismeanswemustcheck1.o

3、ad_fontOetc.*/errorpo1.icy,return);if(PDE_begindocument(p,d:/he1.1.o.pdf,0,)=-1)rintf(Error:%sn,*PDF_get_errmsg(p);return(2);This1ineisrcquiredtoavoidprob1.emsonJapanesesystems*/PDF_set_parameter(p,hypertextencoding,host):PDF_set_parametcr(p,fakcbo1.d,true);PDF_set_info(p,Creator,he1.1.o,c):PDF_set_

4、info(p,Author,ThomasMerz);PDF_set_info(p,Tit1.e,He1.1.o,wor1.d(C)!);PDF_bcgin_page_cxt(p,a4_width,a4_height,);PDF_setco1.or(p,fi1.1.,cmyk,1,0,0,0);PDF-rect(p,250,250,100,50):PDF_fi1.1.(p);PDF_end_page_ext(p,);PDF_end_document(p,),PDF工ATCH(P)printf(PDF1.ibexceptionoccurredinSamPIe:/n);pri11tf(%d%s:%s

5、n,PDF_get_errnum(p),PDF_get_apiname(p),PDF_get_errmsg(p);PDF_de1.ete(p);getchar();return(2);PDF_de1.ete(p):return0;2.文字输出加载字体运用PDFoad_fontO函数。目前在Windows平台下,好像只能加载可以安装到Windows系统中的字体。假如加载已经安装到系统中的字体(在C:/IVindowsfon1.s文件夹下),可以干脆通过字体的名字加载,如:font=PDF_1oad_font(p,MSUIGothic,0,host,);font=PDFoad_font(p,MKZ

6、2,O,unicode,):也可以通过制定字体文件加载字体,如:PDF_set_parameter(p,FontOut1.ine,MKZ2=C:/windows/fonts/MKZ2.ttf);font=PDF_1oad_font(p,MKZ2,O,unicode,):host和UniCOde是用于字体编码的方式,host日文系统下详细与代码页cp932等相关,中文系统下与cp936相关。Unicode与PDF所规定的CMAP文件相关,如:UniJIS-UCS2-1KEUC-H等的编码文件。因为字体已经安装到了Windows系统中,详细的字体编码方式,操作系统能够自动处理,无需我们显式的指定。

7、加载字体是一件很耗费时间的工作,或许能占到整个处理的1/4左右。PDF1.ib已经作了些优化,当一个字体只要加载过一次,再次加我就会运用前面产生的字体句柄,不再重新生成。PDF1.Ib加载字体时默认是嵌入的,这样会增大输出的PDF文件。好处是当文件被移动到其他系统上时,打开文件时不受字体的影响,否则,打开文件前须要先安装字体。我们这次的项目,生成的PDF文件须要用FTP转送到So1.aris系统,并且要送入打印机,所以必需以嵌入方式加载的字体。 设置字体运用PDF_setfontO函数,如:PDI1.setfont(p,font,30);30指的是字号,也就是字体的高度。但这个和系统的缩放比例

8、相关。假如设字体前设定系统的缩放比例为2,实际输出的字体的高度为60个单位。PSEdit的字体的输出过程中,绝大部分采纳的是变换系统坐标的方法来确定字体的大小,所以编程中运用了PDF_setfont(p,font,1)的方式,即字体的大小为当前系统的缩放比例的值相同。 文字输出PDF1.ib的文字处理,较PostScript而言,加强了功能,增加了大量文字及段落等的处理。但本次PSEdit编程中,受于以前软件框架的限制,只运用了单字输出的功能PDFJnfo,ex1.1.ine(),尽管这个函数也能用于输出一个字符串。PDF_info_text1.ine函数有个选项列表,供应的功能相当丰富。基本

9、上覆盖了对字体的全部的变更和变形。如I:倾斜、旋转、缩放、着色、偏移以及指定字体等等。 文字阴影采纳在相互错开的位置上输出两次同样的字符,实现阴影。 空心字通过指定PD1.1.infOJeXt1.ine函数的三个选项参数textrendering-strokewidth、Strokcco1.or来实现。如输出空心字,边缘宽1个单位,边缘色为青色,边缘线圆头连接:PDF_set1.inejoin(p,1):PDF_fit_tex11ine(p,ABCDEF,0,50,550,Iextrendering=IStrokewidth=Istrokeco1.or=CMYK1Oo0);立体字和艺术字,这个

10、属于描画字的范围,输出方式是组合起来的多组直线和曲线,线段封闭后,剪切区域形成字体的轮廓区域,然后再用某中颜色或填充模式进行填充。所以每一个立体字和艺术字,都是一个困难的剪切图形。3. 图像输出图像的输出访用PDFJoac1.Eage和PDF_fit_image,输出图像变得相当简洁了。当然,简洁的副作用就是,限制了很多对所加载的图像的处理功能。保留的几个功能是:着色,缩放,旋转。这好像对一般的PDF文件也足够了。图像的最小网点,好像只是报纸打印行业为了使图像不失真而实行的一种特别的图像离散化处理。这种处理功能在很通用的图像处理中间件1.eadTOo1.S中没有供应,可见最小网点并非一种普遍适

11、用的图像处理手段,应当在更为专业性的图像处理工具中才有。4. 图形输出路径(path),指的是某个特定区域的边界。路径是任何图形的基础。能够长生路径的操作事实上只有两种:画直线(PDFjnOVe1.o,PDFine1.o)和画曲线(圆PDF_circ1.e、弧PDF_arc和PDF_arcn曲线PDF_curveto)描边(PDF_strokc),沿路经运用指定的颜色(PDF-Setco1.or)和指定的线宽(PDF-set1.inewidth)进行着色。 填充(PDF_fi11),首先关闭路径(PDF/1osepath把最终一个点和起先点连接宜线),然后用指定的颜色(PDF_setco1.o

12、r)对封闭区域着色。 梯度填充(PDF-Shfi11),是从一种颜色平滑过渡到令一种颜色的填充。填充前先须要生成颜色模式(PDF_shading)o例如梯度填充一个矩形,颜色为从蓝色从红色过渡:PDF_setco1.or(p,fi1.1.,cmyk,1,0,O,O);PDF_rect(p,200,500,200,100);PDF_c1.ip(p):hand1.e=PDF-shading(p,axia1.,210,550,350,550,O,1,O,O,extend=trueextend1.=trueN=I);PDF_shfi1.1.(p,hand1.e);要实现多组颜色梯度填充,只能把区域安相

13、关颜色分成多个区域,每个区域安两种颜色填充。剪切(PDF1ip),把当前封闭的区域独立出来,任何超出这个剪切区域的操作都将无效。剪切,尤其是困难区域的剪切是图形图像处理中的高级处理,其低层实现须要极超群的编程技巧和理论水平。剪切处理应当说是PostScript和PDF中最具有技术含量的部分。剪切时值得留意的是,要复原到前切前的状态,只能运用PDF_save和PDFjestore完成。坐标变换:位移(PDF_trans1.ate)、旋转(PDFjotate)、缩放(PDF_sca1.e)、歪斜(PDF_skew)、应用转换矩阵(PDF_concate)这种对于应用者而言比较简洁的坐标系统,其实是

14、整个系统的精华所在,它为各种形式的图形表现,供应的最基本和坚实的支持。5.嵌入PDF文档把其他的PDF文件的页嵌入到当前的PDF文件中,可以指定位置、大小、旋转,但无法变更颜色。例:hand1.e=PDF_open_pdi_document(p,dfont.pdf,0,);if(hand1.e=-1)(printf(Error:%sn,PDF_get_errmsg(p);return(2):page=PDE_open_pdi_page(p,hand1.e,1,):if(hand1.e=-1)printf(Error:%sn,PDF_gct_ernnsg(p);return(2);)PDF_fi

15、t_pdi_page(p,page,50,150,):PDF_c1ose_pdi_page(p,page);PDF_c1ose_pdi_document(p,hand1.e):6.颜色CMYK色:和本次开发相关的颜色空间是CMYK色调空间。颜色的值为01,全部为O标示白色,全部为1表示黑色。专色:和这个名字反映出来的意思一样,就是某种特别的颜色。一般都和打印机相关,指某种超出打印机混合色之外的颜色。在PSEdit的改造过程中运用了两个(但不肯定都用了)H定义的特色:S1.和S2。没有运用其他的(如工业标准定义的)特色。但为什么要这么做,我还无法理解,或许仅仅是为了分版的须要,在PDF1.ib中,每一个特色都得按一个颜色空间的级别对待。比如画一条线,除了基本的CMYK色要画一次外,应用几个特色,就须要重画几次,在PDF文件中,可以设定OVe

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!