【问题标题】:How can I make PDF tables from Perl?如何从 Perl 制作 PDF 表格?
【发布时间】:2017-04-21 23:41:15
【问题描述】:

是否有任何 perl 模块可以在 pdf 中的指定位置绘制表格,其中给定行和列,每个单元格中的内容为空?

【问题讨论】:

  • 以下解决方案极为有限。例如,您不能轻松地仅更改表格的内部单元格边框,甚至无法使单元格居中对齐。所以你似乎必须从头开始重新编写功能?

标签: perl pdf


【解决方案1】:

想到两个:


我使用 PDF::Table 制作了一个简单的表格,如下所示:

use PDF::API2;
use PDF::Table;

my $pdf   = PDF::API2->new( -file => 'table.pdf' );
my $table = PDF::Table->new;
my $page  = $pdf->page;

my $data = [
  [ 'A1', 'A2', 'A3' ],
  [ 'B1', 'B2', 'B3' ],
  [ 'C1', 'C2', 'C3' ],
];

$table->table( $pdf, $page, $data,
               x       => 50,
               w       => 495,
               start_y => 750,
               next_y  => 700,
               start_h => 300,
               next_h  => 500,
);

$pdf->save;


使用 PDF::Report::Table 如下:

use PDF::Report;
use PDF::Report::Table;

my $pdf   = PDF::Report->new( PageSize => 'A4', PageOrientation => 'Portrait' );
my $table = PDF::Report::Table->new( $pdf );

my $data = [
  [ 'A1', 'A2', 'A3' ],
  [ 'B1', 'B2', 'B3' ],
  [ 'C1', 'C2', 'C3' ],
];

$pdf->openpage;
$pdf->setAddTextPos( 50, 50  );
$table->addTable( $data, 400 );   # 400 is table width

$pdf->saveAs( 'table.pdf' );

【讨论】:

  • my $table = PDF::Table->new; PDF::Table 文档就是这么说的,但是使用它的最新版本:$ perl -e 'use PDF::Table; $table = PDF::Table->new'<br /> Warning: Page must be a PDF::API2::Page object but it seems to be: at -e line 1. Error: Cannot set page from passed PDF object either as it is invalid! at -e line 1.(顺便说一句,格式化帮助说以 4 个空格和以 2 个空格结尾插入换行符是错误的。)
  • @PhilGoetz - 这是我在上面发布后引入的一个错误。我刚刚测试了最有可能在回答时使用的 PDF::Table 版本,它工作正常(0.02 版)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2012-02-08
  • 2017-02-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多