PDFAPI2编程指南Word文件下载.docx
《PDFAPI2编程指南Word文件下载.docx》由会员分享,可在线阅读,更多相关《PDFAPI2编程指南Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
![PDFAPI2编程指南Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-10/9/9bb5504b-47f8-40b4-ae2b-9ffc30702308/9bb5504b-47f8-40b4-ae2b-9ffc307023081.gif)
我是谁?
我是一个Perl爱好者,就像你一样。
只只是我在出版业工作了十二年以上,在印刷之前所有工序的技术问题上面都有些体会。
我解决过的问题包括数据和软件相关的,也有颜色治理方面的,还有照排或系统相关的。
在编写本文档的时候,我正在为一个项目工作。
那个项目中需要利用PDF:
API2来实此刻线文具订购系统的精准预览功能。
以后我还用PDF:
API2为一个垃圾邮件过滤公司实现了较为复杂的报表系统。
如何利用PDF
PDF的优势是能够在一个文件中嵌入各类信息,比如颜色、文字,和字体和图片。
所有这些内容都能够用单个文件发布出去,然后既能够在屏幕上显示,也能够进行高精度的打印输出。
PDF的内置颜色治理功能关于那些高端输出系统来讲是超级受欢迎的。
因为PDF集成了这么许多功能,关于它的编程也会比较复杂,只是你仍是能够慢慢上手。
那个指南要紧介绍了那些比较复杂的边框处置功能。
或许有一天我会有时刻进一步介绍其他的细节。
只是关于PDF来讲,你其实没必要了解所有的细节也能利用它或进行相关的编程。
你能够在LGPL协议的约束下利用text_block那个子程序。
一些重要的PDF概念
媒体框、出血框、媒体框和作品框
当你观看一篇打印的文档时,可能会注意到某个图片或某个色块恰好覆盖到了纸的边界。
让我告知你一个秘密吧:
其实它会超出边界!
每一个打印机生厂商可能会有不同程度的越界宽度,可是确信都支持越界。
这种界限被称为出血线。
另外一件要注意的事确实是咱们并非在真正的纸张大小范围中打印。
若是是那样的话,出血线之外的东西也会被打印在纸上,这可不是什么好事。
因此在A4纸(或信纸)上打印的时候,其实咱们会稍稍超出A4的范围一些,如此出血线就能够和纸张边缘尽可能靠近。
咱们把纸张称为媒体,因为你可能还会在塑料、幻灯片、T恤等物品上打印。
在打印以后,咱们能够把打印件切成你需要的大小。
那个界限就被称为裁切范围。
理论上说,任何需要最终展现的信息都不该该超过那个范围,除非打印机有什么限制。
此刻还剩下的确实是作品框了。
那个范围顾名思义确实是用来容纳真正重要的“艺术品”的地址。
一样来讲那个范围离裁切框的距离和出血框离裁切框的距离相等。
这么规定是因为尽管此刻的打印机都很精准,可是还不能算完美。
若是你的文档中有些重要的内容超越了那个界限,那么很有可能在实际的输出中会看不到它。
核心字体、postscript字体、truetype字体和构造字体
犹如之前介绍的,PDF能把各类信息集成在一个文件中,也包括其中利用的字体。
字体的来源比较多,可是关于PDF:
API2来讲,真正支持的字体其实只有核心字体、postscript字体和truetype字体。
咱们可不能在那个文档中介绍所有的字体,而只会利用核心字体,因为它完全不依托于外部文件。
气宇系统和座标原点
PDF默许情形下会利用”点“作为长度单位,只是那个地址的例子程序会显示如何利用那些大伙儿加倍适应的单位(下面会看到,我用的是毫米)。
座标轴的原点被定在左下角,这种似于笛卡尔座标。
一样来讲咱们适应于把左上角概念为(0,0),座标轴指向右下角。
可是在处置PDF的时候,你需要适应这种左下角为原点的座标系统。
固然,若是能明白纸张的大小,那么应该很容易写一个函数进行两种座标的转换,只是那个地址可不能介绍它的实现。
软件安装
安装PDF:
API2的步骤在那个文档中可不能介绍,只是类似于其他所有的CPAN模块的安装那样,在Linux或其他Unix衍生系统上你能够用下面的命令:
sudoperl-MCPAN-e"
installPDF:
API2"
若是你碰到了安装问题,那么能够问问系统治理员或某个信得过的高手。
实在不行的话还能够去.
创建文档
一个例子
在那个指南中,咱们会创建一个如上的文件(你能够用自己的照片,我用的是前澳大利亚首相的照片)。
那个地址要注意的是咱们概念了裁切框,因此在Acrobat、kpdf、xpdf或其他各类PDF阅读器中查看的时候,它看起来应该类似如此:
你能够在那个地址下载源程序:
(10k字节),最终生成的PDF文件在此下载:
(59k字节)
载入模块
大多数情形下,你只要use那个模块就能够够了。
如此,在需要的时候,它会自动挪用软件包中附带的其他模块。
固然,在那个地址咱们还会一并usestrict和warnings,因为咱们都是好程序员,不是么?
1:
#!
/usr/bin/perl
2:
3:
usestrict;
4:
usewarnings;
5:
6:
usePDF:
API2;
概念大体常量
这些常量使得PDF:
API2的长度加倍容易衡量。
PDF适应于利用点来作为大小和长度的单位,而这些常量使咱们能利用其他的单位。
比如5/mm就能够返回5毫米对应的点数。
而那个地址的点数(pt)是用来加倍清楚的显示长度单位是点数的情形。
注意这些概念都不是必需的,只是为了便于利用Perl来创建PDF文件罢了。
关于那些喜爱数字的人:
每英寸有72个postscript的点,而一英寸相当于毫米。
8:
useconstantmm=>
/72;
9:
useconstantin=>
1/72;
10:
useconstantpt=>
1;
12:
my($paragraph1,$paragraph2,$picture)=get_data();
概念PDF
这是创建PDF文件的第一步,而那个地址需要的仅仅是概念罢了。
那个例子中咱们还一并设置了文件的名字,但这不是必需的,其实咱们能够在最后再指定它。
14:
my$pdf=PDF:
API2->
new(-file=>
"
$"
);
创建页面
每当你挪用$pdf->
page($page)的时候,就会取得一个新的页面。
那个地址->
page方式其实挪用了PDF:
API2:
Page类的构造器,只只是它还会把那个页面附加到当前PDF的末尾。
若是你在挪用此方式的时候还设置了页号,那么那个页面会插入到那一页以后;
若是没有那么多页,那它就会成为文档的最后一页。
16:
my$page=$pdf->
page;
设置属性
关于PDF来讲,每一页都能够有自己的大小概念。
咱们之前介绍了描述页面大小的四种边框。
在那个地址例子里咱们只会设置媒体框(纸张大小)和裁切框(裁剪后剩余的范围)。
大多数边框会自动继承父容器的概念,因此那个地址真正需要概念的其实只有媒体框。
那个地址媒体框只需要设置宽度和高度。
而出血框,裁切框和作品框都需要别离设置左、下、右、上边界。
17:
$page->
mediabox(105/mm,148/mm);
18:
#$page->
bleedbox(5/mm,5/mm,100/mm,143/mm);
19:
cropboxmm,mm,mm,mm);
20:
artbox(10/mm,10/mm,95/mm,138/mm);
概念字体
字体是在PDF级别概念的,然后所有的页面都能够利用。
因此一样是在程序开始时候进行概念,如此能够幸免在PDF中反复嵌入相同的字体。
类似页面的概念,咱们能够用另一个函数来概念字体对象。
在那个例子中,咱们只会利用核心字体。
这种的字体Adobe已经授权开发人员在文件中免费的利用了。
另外,PDF:
API2还提供了一些微软授权利用的核心字体。
如何存储这些对象是你的自由。
我喜爱利用嵌套的哈希来集中寄存它们,如此以后用起来显得加倍方便些。
可是,只要你快乐,能够把HelveticaBold存储在$foo或$helveticabold如此的变量中.
你可能需要注释掉那个地址的某些行,因为它们可能没必要概念。
要明白,每概念一个字体,就会在PDF中多嵌入一种字体,哪怕你从来都没有效过它。
22:
my%font=(
23:
Helvetica=>
{
24:
Bold=>
$pdf->
corefont('
Helvetica-Bold'
-encoding=>
'
latin1'
),
25:
Roman=>
Helvetica'
26:
Italic=>
Helvetica-Oblique'
27:
},
28:
Times=>
29:
Times-Bold'
30:
Times'
31:
Times-Italic'
32:
33:
做点成心义的情形
目前为止尚未发生任何情形。
若是你保留那个PDF文件(执行$pdf->
save;
close;
),那么打开它时会看到一个空的PDF文件。
此刻咱们开始做点成心义的情形。
PDF是自底向上创建的,后绘制的内容会浮在之前绘制的内容的上面。
关于咱们的样例PDF来讲,有两个要紧的区域:
题目区域和文本区域。
这两个区域相互不覆盖,因此咱们先绘制哪个都能够。
咱们先从文档的顶部开始,第一概念那块蓝色的区域,因为它出此刻其他对象的下面。
追加内容
绘制蓝色方块
为了完成那个任务,咱们需要从页面获取一个图形句柄。
咱们能够把它命名为$gfx,用它来完成所有图形元素的绘制,可是如此会致使PDF的事后编辑超级困难。
若是你并非打算以后再编辑创建的文件,那么如此做是能够的。
在那个地址,咱们会每次用一个新的句柄来绘制新的对象。
注意:
一样以为最正确实践是每用完一个句柄就对它挪用save()和restore()方式。
或许我会在下一版实践它。
35:
my$blue_box=$page->
gfx;
下一步咱们需要设置的是画笔的颜色。
记住,那个地址概念的只是颜色,咱们尚未用它来绘制图形。
只是类似于字体,哪怕没有效过的颜色,也会嵌入在PDF中。
在PDF