我是一名PHP开发人员,在我的一个项目中,我需要将一些HTML文档(大约30到50页)转换为PDF文档.
我的搜索发现了以下可能的解决方案.其中包括一些PHP库和一些命令行应用程序.每个都有自己的优点和缺点.
PHP库:
对于每个图书馆,我遇到的问题包括:
需要太多资源(内存和时间)
(我在php.ini中设置了以下参数:
max_execution_time = 600
memory_limit = 250M
但事情仍然不起作用.)
需要HTML页面格式良好(例如,没有遗漏关闭标签)
当我尝试转换简单的HTML文档(五个或更少的页面,只有很少的CSS)时,所有这些工作都有效
命令行应用程序
与上述库相比,所有命令行应用程序都能完美而快速地工作,但只有当我直接在控制台上运行它们时.当我尝试PHP中使用它们exec()或者system(),他们给我的错误.
以下是我在PHP中运行它们时的命令行应用程序及其错误:
html2pdf(http://www.tufat.com/s_html2ps_html2pdf.htm)
html2pdf:11380):Gtk-WARNING**:无法打开显示:: 0.0
没有指定协议
wkhtmltopdf
载入页面:10%
载入页面:33%
载入页面:100%
等待重定向
输出页面
QPainter :: begin():返回false
QPainter :: begin():返回false
QPainter :: save:Painter not active
QPainter :: scale :Painter不活动
QPainter :: setRenderHint:Painter必须处于活动状态才能设置渲染提示
QPainter :: setBrush:Painter not active
QPainter :: pen:Painter not active
QPainter :: setPen:Painter not active
htmltopdf(http://www.ultrashareware.com/html-to-pdf.htm) …
我正在使用PhantomJS从html创建PDF.
它工作正常,但我无法找到如何使用分页; 我想在文档中为每个div创建一个页面,但是我在文档中找不到任何内容.关于分页.
如果我的文档很短,它只会生成一个页面,如果它更大,它会创建一个第二个空页面,而我的内容在第一个页面中变得很长.
任何的想法 ?(我正在为nodeJS使用phantomJS节点模块)
我正在寻找一个免费的工具,允许重新安排PDF文档的页面,并在每张纸上组合多个页面.第一部分(重新安排)很容易通过许多工具解决(我使用PyPDF).
问题在于第二个要求:将两个(或更多)页面组合成单个页面.例如,取两页(A和B),旋转它们,缩放并组合成这样的单个页面
------ ------ ------
| | | | | |
| A | | B | | a |
| | | | | |
| | | | ---> ------
| | | | | |
| | | | | b |
| | | | | |
------ ------ ------
Run Code Online (Sandbox Code Playgroud)
该解决方案需要在Linux上运行,最好也在Windows上运行.我正在寻找使用Python或Perl绑定的控制台应用程序或库.
我经常使用TeXworks从pdfLaTeX生成报告,并希望生成一个文档索引,该索引将出现在PDF查看器的侧边栏中(例如,evince,Adobe Reader).有没有可以让我这样做的套餐?
作为标题,我想使用markdown作为我的主要写入格式,我需要使用纯python从markdown生成PDF文件.
我目前正在使用Kramdown从Ruby中的Markdown生成HTML.我知道我可以使用kramdown生成一个latex文件,并将其转换为pdf美国命令行实用程序.但我想要一个纯粹的红宝石解决方案.
有没有办法在不使用命令行实用程序的情况下仅使用ruby将markdown转换为pdf?
我使用最新的TCPDF版本(5.9).但编码有一些奇怪的问题.我需要立陶宛语符号,如:ąčęėįšųūž.但只获得少数.其他仍然像????? 所以我该怎么做 ?我使用默认时间字体(它附带TCPDF下载).
任何帮助,将不胜感激.
我有一个报告电子表格,它从数据库中获取一些数据并形成三张摘要报告信息.我想从命令行自动运行电子表格,并让它自动将所有三个报告表格保存为PDF文件.
起初我以为我可以在工作表上有一个VBA宏,通过一系列"打印为PDF",但这需要一个中间交互式对话框来指定输出文件名.然后我发现我可以保存为pdf,宏可以设置输出文件名.然而,这会创建三个单独的文件,然后我必须在外部将它们放在一起以合并它们.
(奇怪的是,保存为pdf只保存一张,其他保存模式似乎可以保存整个工作簿.)
是的,有些工具可以在以后合并这三个文件,但是我想知道是否有一些简单的方法可以让Excel将多个工作表一起保存为一个pdf文件.
我现在打印一系列的东西,如:
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, ...
Run Code Online (Sandbox Code Playgroud)
我可以做一个像(伪代码)的单一语句:
ThisWorkbook.Sheets(1,2,3,4).ExportAsFixedFormat Type:=xlTypePDF, ...
Run Code Online (Sandbox Code Playgroud) 我正在使用ExpertPDF的Html-to-PDF转换实用程序来解决这个问题(尽管如果有足够的文档,我会对其他库开放).
简而言之,我有一个以特定方式格式化的视图,我想将其呈现为用户可以保存到磁盘的PDF文档.
我到目前为止是一个PrintService(它实现了一个IPrintService接口),这个实现有两个PrintToPDF()重载,一个只接受一个URL,另一个接受一个HTML字符串,两者都返回一个byte [].我只计算了需要HTML字符串的第二个重载的细节.
我想从我的控制器做的事情是这样的:
public FileStreamResult Print(int id)
{
var model = _CustomRepository.Get(id);
string renderedView = SomethingThatRendersMyViewAsAString(model);
Stream byteStream = _PrintService.PrintToPdf(renderedView);
HttpContext.Response.AddHeader("content-disposition",
"attachment; filename=report.pdf");
return new FileStreamResult(byteStream, "application/pdf");
}
Run Code Online (Sandbox Code Playgroud)
这在理论上会将PDF呈现给页面.这是我正在寻求帮助的"SomethingThatRendersMyViewAsAString".有没有快速的方法来获取视图的字符串表示?或许我应该坚持使用URL重载并将URL传递给视图......还有其他想法吗?
谢谢!
我正在使用DOM PDF 0.6.0 Beta 2.我想在PDF文件中使用自定义字体(字体:'Segeo Print','Lucida Handwriting','夜空中的飞机').
我按照指南在我的PHP代码中安装和使用字体,这里给出了http://code.google.com/p/dompdf/wiki/CPDFUnicode
但我无法在PDF中获得欲望字体.你可以在这篇文章中找到我的代码.请让我知道如何解决这个问题.
<?php
require_once("dompdf_config.inc.php");
$html = "<html>
<head>
<meta http-equiv='Content-Type' content='text/html;charset=utf-8'>
<style>
*{font-size:15px;}
div.ClJ{font: nightsky;}
</style>
</head>
<body>
<div class='ClJ'>This text is in DIV Element</div><br /><br />
</body>
</html>";
$dompdf = new DOMPDF();
$dompdf->load_html($html);
$dompdf->render();
$pdf = $dompdf->output();
$dompdf->stream("dompdf_out.pdf", array("Attachment" => false));
?>
Run Code Online (Sandbox Code Playgroud)