1

我在 Laravel 框架中使用barryvdh/laravel-snappy包将 html 文件转换为 PDF。

它工作正常,但未显示 PDF 中的图像

html中使用的图像路径如下:

https://easydmc-staging2.s3.ap-south-1.amazonaws.com/ImagesSightseeing/2021/03/1PeocnxOb3gqlZmMSjwXDWwLiEfyq0a8KX5M4OOw.jpeg

这是html的链接:

https://staging.easydmc.com/test?html=true

生成的 PDF 的链接是:

https://staging.easydmc.com/test?html=false

早些时候,图像在 PDF 中运行良好。几天前,我执行了命令 - sudo apt upgrade。我不知道这是否导致了问题。

我尝试重新安装包barryvdh/laravel-snappy,但没有成功。

任何帮助,将不胜感激。

PHP版本:8.0

服务器:Nginx

Laravel:8.51.0

4

2 回答 2

0

我之前遇到过这个问题,是因为wkhtmltopdf. 您应该使用存储完整路径而不是 web url。

例如,而不是使用:

https://easydmc-staging2.s3.ap-south-1.amazonaws.com/ImagesSightseeing/2021/03/1PeocnxOb3gqlZmMSjwXDWwLiEfyq0a8KX5M4OOw.jpeg

使用这样的东西:

/var/www/html/myproject/public/ImagesSightseeing/2021/03/1PeocnxOb3gqlZmMSjwXDWwLiEfyq0a8KX5M4OOw.jpeg

要获得完整的存储路径,您可以使用如下代码:

<img src="{{public_path('/ImagesSightseeing/2021/03/1PeocnxOb3gqlZmMSjwXDWwLiEfyq0a8KX5M4OOw.jpeg')}}" />
于 2021-08-02T18:14:39.613 回答
0

我得到了解决方案:

首先,我在使用以下命令生成 PDF 时检查了是否存在问题:

/usr/local/bin/wkhtmltopdf-amd64 http://www.google.com test.pdf

我了解了以下问题:

QSslSocket: cannot resolve CRYPTO_num_locks                  ] 10%
QSslSocket: cannot resolve CRYPTO_set_id_callback
QSslSocket: cannot resolve CRYPTO_set_locking_callback
QSslSocket: cannot resolve sk_free
QSslSocket: cannot resolve sk_num
QSslSocket: cannot resolve sk_pop_free
QSslSocket: cannot resolve sk_value
QSslSocket: cannot resolve SSL_library_init
QSslSocket: cannot resolve SSL_load_error_strings
QSslSocket: cannot resolve SSLv3_client_method
QSslSocket: cannot resolve SSLv23_client_method
QSslSocket: cannot resolve SSLv3_server_method
QSslSocket: cannot resolve SSLv23_server_method
QSslSocket: cannot resolve X509_STORE_CTX_get_chain
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_noconf
QSslSocket: cannot resolve OPENSSL_add_all_algorithms_conf
QSslSocket: cannot resolve SSLeay
QSslSocket: cannot call unresolved function CRYPTO_num_locks
QSslSocket: cannot call unresolved function CRYPTO_set_id_callback
QSslSocket: cannot call unresolved function CRYPTO_set_locking_callback
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function sk_num
QSslSocket: cannot call unresolved function SSLv23_client_method00%
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_library_init

上述问题的解决方案是安装 libssl1.0-dev:

apt install libssl1.0-dev

所以我在原始问题中的 PDF 链接https://staging.easydmc.com/test?html=false现在开始工作了。

于 2021-08-03T04:12:23.893 回答