【发布时间】:2014-08-27 10:16:02
【问题描述】:
我正在使用CAM::PDF 来合并几个 PDF 文件。这工作正常。现在我需要使用PDF::API2 在每一页上添加一个图章。这适用于某些页面,但不适用于其他页面。
使用 wkhtmltopdf 创建的 PDF 文件的协调系统似乎发生了翻转,并且缩放比例也关闭了。
在浏览页面时,我会添加这样的标记:
my $pdf2 = PDF::API2->open_scalar($pdf_data);
my $page_count = $pdf2->pages;
for my $i ( 1 .. $page_count ) {
my $page = $pdf2->openpage($i);
my $content = $page->gfx();
my $text = $page->text();
$content->linewidth(2);
$content->rectxy( 5, 10, 140, 40 );
$content->stroke;
my $font = $pdf2->ttfont('calibri.ttf');
$text->scale( 1.0, 1.0 );
$text->font( $font, 12 );
$text->translate( 10, 14 );
$text->text( sprintf( 'PAGINA %d VAN %d', $i, $page_count ) );
$text->translate( 10, 26 );
$text->text('some ID');
}
my $pdf_data = $pdf2->stringify;
现在,来自 wkhtmltopdf 的页面在左上角(但在页边距内)有一个小框,其中包含更细小的文本,并且它是镜像的。非 wkhtmltopdf 页面在左下角有一个大小合适的框,文本大小合适(忽略页边距)。
使用$content->scale 和$content->rotate(180) 我可以在wkhtmltopdf 创建的页面上正确显示印章。但是其他页面就乱了。
那么,有什么方法可以确保每个文档在所有页面上都具有相同的方向、旋转和缩放比例?
【问题讨论】:
-
一个奇怪的观察是,当我使用 wkhtmltopdf 将 DPI 设置为 70 时,图章的大小似乎匹配。文本和坐标似乎仍然是镜像的。
-
另外,当我不使用
CAM::PDF并且只是将由 wkhtmltopdf 生成的单个 PDF 文档直接传递给PDF::API2时,也会出现同样的问题。 -
参见this answer,它通过使用 importPageIntoForm 方法然后覆盖新的文本和图形来解决这个问题。
-
@snoopy 谢谢,我会调查的。
标签: perl pdf perl-module