在Perl中制作PDF报告?
Perl的所有PDF库似乎有点野蛮 – 困在20世纪80年代.您必须指定PostScript点进行布局.
Java有JasperReports,Ruby有Prawn,Python有ReportLab.有没有一个非绝灭的图书馆/模块,让我在不到一个星期的编码中做一个漂亮的PDF? (我有点沮丧的PDF :: API2,PDF ::表等)我不想生成HTML并转换它. Perl是报告的理想选择,但主要报告文件格式不可用.人们使用哪些图书馆?
我需要: >表 如果绝对需要,我稍微打开包装外部(非Perl)开源工具.但对主要的Java服务器方法并不感兴趣.对于赏金,我想要一个纯粹的Perl方法,因为我想在不能添加多个模块的服务器上运行这个方法.如果你有一个很好的公共例子,请指出我. 解决方法
如果LaTeX太大,也许可以使用
Inline::Python 来包装ReportLab,大家似乎都很喜欢(我没有使用它,对Python并不太熟练).
编辑3: # Inline/Python/ReportLab.pm package Inline::Python::ReportLab; use strict; use warnings; use Carp; use Inline::Python qw/py_eval/; our @ISA = 'Inline::Python::Object'; sub import { py_eval('from reportlab.pdfgen.canvas import Canvas'); } sub new { my $class = shift; my $filename = shift || croak "Must specify file name to contructor"; return bless(Inline::Python::Object->new('__main__','Canvas',$filename),$class); } 1; 那么一个脚本可能是这样的: #!/usr/bin/env perl use strict; use warnings; use Inline::Python::ReportLab; my $c = Inline::Python::ReportLab->new('hello.pdf'); $c->drawString(100,100,"Hello World"); $c->showPage(); $c->save(); 编辑2: #!/usr/bin/env perl use strict; use warnings; use Inline::Python qw/py_eval/; py_eval('from reportlab.pdfgen.canvas import Canvas'); my $c = Inline::Python::Object->new('__main__','hello.pdf'); $c->drawString(100,"Hello World"); $c->showPage(); $c->save(); 编辑2/3:这部分作为一个更加手动的界面的例子.我认为编辑2/3提供了一个更好的界面,使原来的Python类没有(太多)的包装. 编辑1:我已经通过在方法中手动黑客暴露了一些功能.这意味着对于每个想要使用的方法,必须添加一个包装方法.虽然这已经是一个可行的解决方案,但我不知道是否有更简单的方法来暴露整个python’canvas’类,但是现在这就是我所在的地方: #!/usr/bin/env perl use strict; use warnings; use Inline Python => <<END_PYTHON; from reportlab.pdfgen import canvas class Canvas: def __init__(self,filename): self.canvas = canvas.Canvas(filename) def drawString(self,x,y,text): self.canvas.drawString(x,text) def save(self): self.canvas.showPage() self.canvas.save() END_PYTHON my $c = Canvas->new('hello.pdf'); $c->drawString(100,"Hello World"); $c->save(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |