FPDF错误:丢失或不正确的图像文件

问题描述:

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

我的代码是:

 
require('fpdf.php'); 

$pdf = new FPDF(); 
$pdf->AddPage(); 
$pdf->SetFont('Arial', 'B', 16); 
$pdf->Write(10, 'Example image'); 
$image_path = MY_FILE_PATH; // This variable contains my actual file path 
$pdf->Image($image_path, 10, 10, 350, 450); 
$pdf->Output(); 

此代码是在我的本地主机可以正常使用,甚至与图像也产生相应的PDF文件,但这不是移动到服务器后工作。

我试图与这些可能性,如:

  1. 随着用于图像的绝对和相对路径。

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

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

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

这些情况都没有为我工作,坚持这个问题,谁能帮我解决这个问题。

谢谢!

湿婆...

+0

您可以显示您正在使用的示例路径吗? – 2010-07-05 07:25:21

+0

作为示例,您可以采用http://www.desicomments.com/user/2008/03/7139/good.jpg的路径。我们可以在FPDF中使用'/test.jpg'这样的相对路径吗? – Siva 2010-07-05 07:46:18

+0

Pekka,感谢您的回复,得到了这个问题的原因并解决了这个问题。 – Siva 2010-07-07 17:34:35

长期斗争后,终于让我找到了这个问题,我已经讨论here的原因。

主要是这个问题是由于'allow_url_fopen'设置没有为我的服务器启用,我已经通过使用CURL解决了这个问题。我正在一步一步地解决这个问题,因为这可能对像我这样的人有用,以避免浪费时间(寻找解决方案)。

 
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. 

我认为这是解决这个问题的一种方法,如果有人知道一些其他的方式,那么你可以在这里发布他们,所以,这个问题可能是为别人有用。

只需添加:

了allow_url_fopen = ON

在php.ini文件(新建如果不存在的话)解决了这个问题。

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

+0

但是在这个过程中打开一个潜在的安全问题的世界...... – nickhar 2012-10-17 11:59:58

+1

@ user1638334,这导致我们在解决问题的过程中面临安全威胁,正如Nickhar所说,所以我觉得以不同的方式解决这个问题更好例如:使用CURL)。 – Siva 2012-10-18 05:42:59

+0

为何选票回落?我同意''allow_url_include'最好不要离开。但来自'allow_url_fopen'的安全威胁是什么? PHP甚至默认它打开。 – ficuscr 2015-06-12 01:29:00