2

我正在使用 FPDF 库通过 PHP 生成 PDF 文件。这个库可以很好地处理纯文本(即为任何文本生成 PDF 文件),但这给了我FPDF error: Missing or incorrect image file:{MY_FILE_PATH}在尝试将图像添加到我的 PDF 页面时的错误。通过浏览器访问该文件路径,然后相应的图像显示正常。

我的代码是:

要求('fpdf.php');

$pdf = 新的 FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);
$pdf->Write(10, '示例图片');
$image_path = MY_FILE_PATH; // 这个变量包含我的实际文件路径
$pdf->Image($image_path, 10, 10, 350, 450);
$pdf->输出();

这段代码在我的本地主机中运行良好,即使使用图像也能生成相应的 PDF 文件,但是在移动到服务器后这不起作用。

我尝试过这些可能性,例如:

  1. 带有图像的绝对路径和相对路径。

  2. 尝试使用放置在同一文件夹中的本地图像。

  3. 所有图像格式,如 jpg、png 和 gif。

  4. 还检查了图像和相应文件夹的权限。

这些案例都不适合我,遇到这个问题,谁能帮我解决这个问题。

谢谢!

湿婆...

4

3 回答 3

5

After a long struggle finally I found the reason for this issue which I've already discussed here.

Mainly this problem is due to the 'allow_url_fopen' setting which is not enabled for my server, I've solved this issue by using the CURL. I'm giving the step by step procedure to solve this issue because this may useful for somebody like me to avoid wastage of time(for finding the solution).

1. Create a temporary file in the local system with write permission.

Ex: $fp = @fopen($local_file_path, 'x'); 
    fclose($fp);

2. Get the remote location file contents using CURL and write that to local file 
which is created in the previous step.

Ex: $curl = new CurlWrapper($remote_file_path);
    $curl->copyToFile($local_file_path);

3. Now send this local file path to FPDF function(image) then the corresponding 
PDF will get generate for the file without any issues.

I think this is one method to solve this issue, if anybody knows some other ways then you can post them here so that this question may be useful for somebody.

于 2010-08-26T18:36:05.873 回答
2

只需添加:

allow_url_fopen = ON

在 php.ini 上(如果不存在则创建新的)解决了这个问题。

http://www.solo-technology.com/blog/2010/04/07/quick-fix-for-url-file-access-is-disabled-issues/

于 2012-10-17T11:57:08.217 回答
0

任何人都可以使用此代码来解决。也许它会起作用。因为有时某些情况可能会有所不同。就我而言,我遇到了同样的问题,但在使用后。我解决了我的问题..

$pdf->Image($image_path, 10, 10, 350, 450 ,''); 

尝试为$pdf->Image()函数的 6 个参数提供空字符串,或者您可以提供文件扩展名,例如(PNG 或 JPG)。在我的情况下, 空字符串 ''正在工作。因为我正在裁剪图像,所以图像有时会出错。所以在那之后我的问题就解决了,我用不同的图像进行了测试。

于 2021-03-12T20:49:15.073 回答