我想在阿尔马9或Ubuntu 22.04中使用pdflib for php 8.2。没有可用的pecl二进制文件。我下载了php_pdflib.so并将其添加到了php.ini中。所需功能现已可用。但PDF_new()
或pdf_new()
不可用。我试着编译https://pecl.php.net/get/pdflib-4.1.4.tgz和https://github.com/Distrotech/PDFlib-Lite的代码。但我面临着以下错误:
...
/var/tmp/pdflib/pdf.c:144:19: note: to match this _(_
144 | _pdf_exception(PDF_get_errnum(pdf), PDF_get_apiname(pdf), \
| ^
/var/tmp/pdflib/pdf.c:925:7: note: in expansion of macro _pdf_catch_
925 | } pdf_catch;
| ^~~~~~~~~
/var/tmp/pdflib/pdf.c: In function _zim_PDFlibException_get_errmsg_:
/var/tmp/pdflib/pdf.c:929:1: error: expected declaration or statement at end of input
929 | } /* }}} */
| ^
/var/tmp/pdflib/pdf.c: In function _zim_PDFlibException_get_apiname_:
/var/tmp/pdflib/pdf.c:929:1: error: expected declaration or statement at end of input
make: *** [Makefile:210: pdf.lo] Error 1
ERROR: `make' failed
字符串
我知道我可以使用其他的库,但是大量的代码是用pdflib编写的,而且这些代码是在php5.4中运行的。我需要升级php。我按照this,但同样的错误。
如有任何帮助,我们将不胜感激。
1条答案
按热度按时间q8l4jmvw1#
PHP 8.2(2022年12月发布)仅支持PDFlib 10.0.1。在PDFlib 10中,已经删除了不推荐使用的函数式PHP Package 器。(2009年发布的PDFlib 8中标记为已弃用)。PDFlib 10迁移指南:x1c 0d1x的数据
这听起来像是一个很大的努力,但通常可以通过相对简单的搜索和替换来完成从不推荐的函数式PHP Package 器到PDFlib OOP Package 器的转换。
字符串
成为
型
即
PDF_
被$p->
替换(作为PDFlib对象),第一个参数(PDFlib句柄)被省略。是的,每个调用都必须自定义,但这通常很简单。但是,如果您仍然有非常旧的代码,则其他不推荐使用的函数可能会受到影响。因此,我要求您阅读PDFlib 10迁移指南,该指南包含在PDFlib 10包中,并在PDFlib网站上链接。如果您尝试从较旧的PDFlib版本升级,我建议您使用PDFlib 10迁移指南中推荐的路径:https://www.pdflib.com/products/pdflib-family/deprecated-api-methods-and-options/
如果您尝试从较旧的PDFlib版本升级,我建议您使用PDFlib 10迁移指南中推荐的路径:
这一步的好处还在于,可以让你的代码逐步为PHP 8和PDFlib 10做好准备。
PDFlib 7 Lite于2011年发布,10年前已达到产品生命周期结束,PDFlib GmbH不再支持。除此之外,您还应该了解PDFlib Lite许可条款,该条款只允许非常有限的生产性使用。https://github.com/Distrotech/PDFlib-Lite/blob/master/doc/pdflib/PDFlib-Lite-license.pdf的
因此,我建议您使用PDFlib 10二进制版本,并花费少量精力准备好您的代码PDFlib 10。
通常是值得的!