将Excel (.xls)文件转换为PDF格式的PHP方法

4

有没有任何将xls文件转换为pdf文档的php/java/open source软件转换器或php库?

简述:已有代码生成xls电子表格(大约2002-2006年,我相信是早期的open xml版本),需要将它们转换为pdf以满足各种需求。

我已经到处搜索了,包括在这里。我认为我只需要正确方向上的帮助,我相信已经有现成的东西可以实现这个功能。


你是否考虑过重构你的代码,直接生成PDF文件呢?而不是先生成Excel电子表格再尝试进行转换? - MadMurf
https://dev59.com/_HVC5IYBdhLWcg3whRgw 提供了使用PHP生成PDF的解决方案。 - MadMurf
@MadMurf,这正是我所希望避免的 - 这里涉及到很多现有的代码。虽然我更愿意这样做,但大多数情况下重构是不可能的。 - lsl
@jim,我完全理解重构不总是可用的,这就是为什么我写了一条注释而不是答案。维护现有代码库的乐趣。需要注意的一点是,当您探索@Speher的解决方案时,使用OpenOffice打开/处理.XLS并输出到.pdf的性能。如果它在用户工作站上一个接一个地处理,就没有问题,但是如果将要处理来自多个来源的请求,则可能会遇到性能和锁定问题。几年前,在这种情况下使用MS Office很有趣。 - MadMurf
我们所有的 Excel 报告都是一次性的,每天最多运行一次,因此在这方面不会有任何问题,至少很长一段时间内不会出现。可能会有一些自动化报告的问题,但即使最糟糕的情况下,我也可以使用 cron 编辑将它们分别间隔 1 分钟运行。 - lsl
2个回答

2

由于PHP可以在Linux中通过shell执行命令,因此这篇文章可能是一个不错的开始。


正是我所期望的。谢谢,测试完后我会回报! - lsl
安装过程中遇到了一些网络问题...然后还有其他事情要做,明天再看看吧!我想我还得手动配置和编辑它们。 - lsl

1
您可以在Linux上安装OpenOffice并将PDF作者设置为默认打印机驱动程序,从而将XLS文件转换为PDF。
然后,您可以使用"-p"命令行参数调用OpenOffice(从PHP),这将导致它加载指定的文件并打印它。
例如,如果您的文件名为"accounts.xls",则应调用以下命令:
soffice -p accounts.xls
OpenOffice将加载"accounts.xls"文件并将其“打印”到PDF作者中,该作者将配置为将PDF文档保存到所需的文件名。
GhostScript是一个适合的PDF作者。
OpenOffice设置指南描述了如何使用“spadmin”实用程序安装和配置打印机驱动程序,并讨论了使用ghostscript作为PDF作者的方法: “Open Office设置指南-附录” http://www.openoffice.org/docs/setup_guide/appendix.html 您可以通过使用反引号执行运算符或“exec”函数从PHP中调用OpenOffice。您可能还需要使用PHP移动和/或重命名生成的PDF文件:

PHP: 程序执行函数 http://www.php.net/manual/zh/ref.exec.php

PHP: 文件系统: 重命名 http://www.php.net/manual/zh/function.rename.php

OpenOffice 在处理 XLS 文件方面表现得相当不错,但它可能无法完美地呈现每个此类文件 - 因此,如果您需要最高的兼容性,您将不得不在 Windows 平台上或模拟器上使用 Microsoft Excel。"IT AsiaOne" 查看了几个替代 Microsoft Office 的选择(包括 OpenOffice),并写道 "虽然没有一个替代套件承诺...与 Microsoft Office 创建的文档的完全兼容性,但总体而言,它们在翻译 Microsoft ".doc"、".ppt" 和 ".xls" 文件格式方面做得很好":

IT AsiaOne - 特别报道 - 您可以选择的内容 http://it.asia1.com.sg/specials/mmedia20020724_001.html

其他链接:

OpenOffice.org首页 http://www.openoffice.org/

Ghostscript首页 http://www.cs.wisc.edu/~ghost/

PHP首页 http://www.php.net/

Google搜索策略:

openoffice scripting pdf linux ://www.google.com/search?q=openoffice%20scripting%20pdf%20linux

openoffice print "command line" ://www.google.com/search?q=openoffice%20scripting%20pdf%20linux

然后从openoffice.org首页搜索“命令行参数”。

参考:http://answers.google.com/answers/threadview/id/177241.html


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接