如何使用PDF :: API2 :: Lite添加页眉,页脚和图像?
是否可以在图像中添加标题(包含文本和图像)和页脚(包含页码)。我写下面的代码来创建一个显示png图像的PDF文档。如何使用PDF :: API2 :: Lite添加页眉,页脚和图像?
如果这可以很容易地与任何其他模块,请建议。真正明白反应与示例代码。
use strict;
use PDF::API2::Lite;
use Getopt::Long;
my $outfile;
my $path;
my $options = GetOptions("outfile=s" => \$outfile,
"images=s" => \$path,);
my @images = sort glob("$path") or die "No Files\n";
my $pdf = PDF::API2::Lite->new();
for my $png (sort @images) {
my $image = $pdf->image_png("$png");
$pdf->page(1150,450);
$pdf->image($image, 10, 10);
}
$pdf->saveas($outfile);
在SO上等了一天,节省了10分钟读取模块文档。这并不难,太空。
use PDF::API2 qw();
{
my $pdf = PDF::API2->open('input.pdf');
for my $index (1 .. $pdf->pages) {
my $page = $pdf->openpage($index);
my $txt = $page->text;
$txt->textlabel(300, 700, $pdf->corefont('Helvetica Bold'), 12, 'some Header text');
my $gfx = $page->gfx;
$gfx->image($pdf->image_png('Header_image.png'), 150, 700);
$txt->textlabel(300, 100, $pdf->corefont('Helvetica Bold'), 12, "Page: $index");
}
$pdf->saveas('output.pdf');
$pdf->end;
}
看看PDF::API2::Simple
代替。此CPAN模块提供了一些围绕PDF::API2
的便利帮手方法,包括页眉和页脚。
下面是一个简单的工作页眉/页脚例如:
use 5.012;
use warnings;
use PDF::API2::Simple;
our $PageNo;
my $pdf = PDF::API2::Simple->new(
file => 'file.pdf',
header => \&header,
footer => \&footer,
);
$pdf->add_font('Verdana');
for my $page (1..3) {
$pdf->add_page;
$pdf->image('image.png', x => 300, y => 300);
}
$pdf->save;
sub header { shift->text('Header text here') }
sub footer { shift->text('page: ' . ++$PageNo, x => 10, y => 10) }
/I3az/
PDF::API2是我对这样的事情主力。
一旦我需要对现有的PDF文档进行任何上传或重新处理,我几乎总是会使用importPageIntoForm
方法。
作为一个通用的解决方案,我创建一个新的PDF,逐页,导入我想要铺设的元素,然后添加额外的文本或图形。
#!/usr/bin/perl
use common::sense;
use PDF::API2;
my $infile = shift (@ARGV);
my $outfile = shift (@ARGV);
die "usage $0: infile outfile"
unless $infile && $outfile;
my $pdf_in = PDF::API2->open($infile);
my $pdf_out = PDF::API2->new;
foreach my $pagenum (1 .. $pdf_in->pages) {
my $page_in = $pdf_in->openpage($pagenum);
#
# create a new page
#
my $page_out = $pdf_out->page(0);
my @mbox = $page_in->get_mediabox;
$page_out->mediabox(@mbox);
my $xo = $pdf_out->importPageIntoForm($pdf_in, $pagenum);
#
# lay up the input page in the output page
# note that you can adjust the position and scale, if required
#
my $gfx = $page_out->gfx;
$gfx->formimage($xo,
0, 0, # x y
1); # scale
#
# add page number text
#
my $txt = $page_out->text;
$txt->strokecolor('#000000');
$txt->translate(
my $_x = 200,
my $_y = 50
);
my $font = $pdf_out->corefont('Courier');
$txt->font($font, 12);
$txt->text('Page: '.$pagenum);
#
# add header image
#
my $header_img = $pdf_out->image_png('SomeHeader.png');
$gfx->image($header_img, 0, 400);
}
$pdf_out->saveas($outfile);
这是一个非常好的方法 - 而不是修改PDF的地方,使用它作为模板来创建一个新的PDF。感谢您告诉我们关于importPageIntoForm()! – 2011-08-31 09:24:03
我已经在线查看关于使用PDF :: AP12的详细信息,但细节非常详细。在CPAN网站上看过,但是没有说明在哪里阅读文档,那么您在哪里找到详细信息? (目前,CPAN命令行甚至不会识别PDF :: AP12 =或AP13 =作为合法模块!而且还没有完全掌握下载tar文件并手动安装到草莓Perl中)
我很好奇这个“importPageIntoForm”项目:如果我设计了一个使用DTP程序的主PDF页面(对于标签制作,即3宽8深),并在每个单元的右侧放置了一个虚拟图形(?),我是否可以交换这些出来用这个? (如果你喜欢,一个在线“邮件合并”替换图形与个人QR码C/O GD :: BARCODE :: QRcode)
或者最好从头开始创建每个页面与主程序?
这是PDF :: API2不是PDF :: AP12 – 2016-12-17 22:56:20
感谢Daxim:这段代码是编辑现有的文档。你能建议我如何使用它来创建带有图像的新文档 – Space 2010-06-04 13:02:26
使用['new'构造函数](http://p3rl.org/PDF::API2#GENERIC_METHODS)。请阅读文档。 – daxim 2010-06-04 15:04:44
感谢daxim:你能否请我也建议我如何添加PDF文档的属性。 – Space 2010-06-09 07:08:14