您能否建议我使用一些工具从HTML表格生成可下载的PDF?
如果可能,与Twitter Bootstrap兼容。
Ps。:我试过Prawn,但我想知道其他一些工具。
答案 0 :(得分:2)
您需要了解的内容
基本Perl脚本,HTML,Perl模块安装
<强>简介强>
Adobe©PDF文件是传输文档的常用文件格式之一。其中一个原因是它以打印方式显示文档(WYSIWYG)。由于它不需要文字处理器来浏览文档,因此它也更方便。您只需要他们的读者就可以浏览文档。
Perl有一个模块,允许您将HTML文件转换为PDF文档。这是通过使用HTML :: HTMLDoc模块完成的。
<强>安装强>
您需要从Easy Software Products下载HTMLDoc产品。首先安装它,然后您可以继续从CPAN下载HTML :: HTMLDoc模块。下载后,按照典型的Perl模块进行安装。
生成PDF文档
首先要做的是使用模块并创建HTML :: HTMLDoc包的实例。
然后,您可以将完整的HTML文档传递给包,或者告诉它从HTML文件生成PDF文档。
示例代码
#!/usr/bin/perl
use HTML::HTMLDoc;
use strict;
####################################################
# This script is distributed according to the terms of
# the Perl Artistic License. Use at your own risk
# © 2004 Philip L. Yuson
####################################################
my $str = '
<html>
<body>
<p><font size=14pt><b>HTML to PDF Document</b></font></p>
<p>Let us see how this will work</p>
<table border=1>
<tr><td>This is a row in a table</td></tr>
<tr><td>This is another row</td></tr>
</table>
<HR>
copyright © 2004 Philip L. Yuson
</body>
</html>';
my $html = new HTML::HTMLDoc(); # Start instance
$html->set_page_size('letter'); # set page size
$html->set_bodyfont('Arial'); # set font
$html->set_left_margin(1, 'in'); # set margin
$html->set_html_content($str); # contents to convert
my $pdf = $html->generate_pdf(); # generate document
$pdf->to_file('article.pdf'); # save document
将其另存为pdf.pl并通过启动命令行并输入以下命令来运行它:
perl pdf.pl
这应生成与此类似的PDF文件。
生成PDF文件以便在网上下载
要生成可下载的PDF而不将其保存到文件,您可以使用与上面相同的脚本,但需要更改最后一行。但是,为了使我们的示例更有趣,我们还将日期和时间放在文档上。因此脚本将如下所示:
#!/usr/bin/perl
use HTML::HTMLDoc;
use Date::Calc;
use strict;
####################################################
# This script is distributed according to the terms of
# the Perl Artistic License. Use at your own risk
# © 2004 Philip L. Yuson
####################################################
my @c = Date::Calc::Today_and_Now();
my $str_temp;
foreach (@c) {
$str_temp .= sprintf("%02d:", $_);
}
my $str = "
<html>
<body>
<p><font size=14pt><b>HTML to PDF Document</b></font></p>
<p>Let us see how this will work</p>
<table border=1>
<tr><td>This is a row in a table</td></tr>
<tr><td>This is another row</td></tr>
</table>
<HR>
This document was generated:
$str_temp
copyright © 2004 Philip L. Yuson
</body>
</html>";
my $html = new HTML::HTMLDoc(); # Start instance
$html->set_page_size('letter'); # set page size
$html->set_bodyfont('Arial'); # set font
$html->set_left_margin(1, 'in'); # set margin
$html->set_html_content($str); # contents to convert
my $pdf = $html->generate_pdf(); # generate document
# Tell browser this is a a PDF document
print "Content-Type: Application/pdf\n\n";
$pdf->to_string(); # Send the document