如何通过PHP将.xls转换为.pdf?

3

我已经搜索了很多小时,但是还没有得到解决方案。

我需要将 .xls 文件转换为 .pdf 文件。怎么做呢?我找到了 http://www.aspose.com/,但似乎它没有 PHP API,只有 .NET 和 JAVA。

感谢您的每一个建议...


2
也许可以使用 PHP EXCEL https://phpexcel.codeplex.com/ 来读取它,然后使用 TCPDF http://www.tcpdf.org/ 来输出它。 - Pwner
是的,我正在使用PHP EXCEL来编辑.xls文件,但TCPDF转换器总是完全破坏了.xls结构... 在TCPDF文档中,我甚至找不到任何将.xls转换为.pdf的功能... - David Holada
1
PHPExcel提供了一个PDF Writer,可以用作tcPDF、mPDF或DomPDF的包装器作为实际的PDF渲染引擎...这三个不同的引擎提供不同质量的输出,但我认为tcPDF是最差的。 - Mark Baker
3个回答

6

PHPExcel可以直接完成此任务(读取XLS,输出PDF),尽管结果不是很漂亮。

更好的解决方案可能是使用PHPExcel读取XLS文件,在您的代码中将其呈现为HTML并进行样式设置,然后使用HTML-> PDF转换器(我尝试过的唯一一个是DOMPDF;还有其他选择)转换为PDF。

或者,如果您想跳过HTML步骤,可以使用其中一个PHP PDF库直接将其呈现为PDF——我个人最喜欢的是FPDF


1
是的,谢谢。但我该如何将PHPEXCEL与FPDF连接起来? 我该如何编辑这些行 $rendererName = PHPExcel_Settings::PDF_RENDERER_TCPDF; $rendererLibrary = 'fpdf'; $rendererLibraryPath = 'fpdf/' . $rendererLibrary;? - David Holada
1
抱歉,我并不是指使用FDPF作为PHPExcel的渲染器;我是指加载您的XLS文件,以任何您想要的方式遍历单元格,并使用FPDF从头开始构建PDF文档。我知道这需要很多工作,但FPDF使得构建PDF文档非常容易。 - Kryten

2

使用无界面的LibreOffice和一个Shell命令

shell_exec('C:\wamp64\www\phpexcel\lo\App\libreoffice\program\soffice.exe --headless --convert-to pdf:calc_pdf_Export --outdir C:\wamp64\www\phpexcel\o C:\wamp64\www\phpexcel\new.xlsx');

在Ubuntu中,这个像魔法一样好用——只要你需要为Linux更正语法。我将确切的命令作为答案添加在下面,供正在寻找相同内容的人使用。 - Sandipan S

1

如果有人想在Ubuntu/Linux上使用PHP进行此操作 -

Ubuntu默认安装了LibreOffice。任何人都可以使用shell命令来使用无头LibreOffice完成此操作。

shell_exec('/usr/bin/libreoffice --headless --convert-to pdf:calc_pdf_Export --outdir /var/www/html/XlsToPdf/public_html/src/var/output /var/www/html/XlsToPdf/public_html/src/var/source/company-a.xlsx');

希望它能帮助像我一样的其他人。

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