2013-10-04 40 views
0

我有一个表单,用户可以填写输入框。在某些情况下,他们也可以选择图像。我可以使用dompdf将张贴的图像文件注入到PDF中吗?

的问题是,我不想保存在某个地方我们的服务器上的图像文件,并给PDF这样的网址:

//Put uploaded file on public/uploads/ folder 
<img src="{{ $imagePath }}" style="height: 50px; width: 50px;"> 

相反,我想直接注入上传图像到PDF文件。这样的事情:

PDF::load($data, 'A4', 'portrait')->inject('image', Input::file('resim'))->output(); 
//So I can reference it as {{ $image }} on PDF template, but image will be injected into PDF file 

我是初学者的PDF文件,我甚至不确定这是否可能。

如果可能的话,任何人都可以给我一些建议吗?

Ps。我使用Laravel 4的DOMPDF软件包。https://github.com/thujohn/pdf-l4

回答

1

您需要能够以某种方式在文档中引用图像。有几种方法可以做到这一点。

从上载访问临时文件。

在您的HTML文件中,只需引用由上传创建的临时文件作为您的图像源,例如,

<img src="<?php echo $_FILES['userfile']['tmp_name']; ?>"> 

捕捉图像的内容,并将其写入到HTML作为数据URI值

DOMPDF理解data-uris,所以你可能需要上传的文件,将其转换为数据URI ,并将其插入到HTML中。

您必须检测图像格式,根据您的PHP版本可能需要更多的工作。使用v5.3 +,您可以使用finfo_file方法。如果该扩展名不可用,您可以通过解析文件扩展名来执行一些基本的内容类型检测。

在我的示例中,我只是将PNG指定为图像类型。

<?php 
// detect mime type, but I'm forcing PNG 
$mime = 'image/png'; 
?> 
<img src="<?php echo 'data:' , $mime , ';base64,' , base64_encode(file_get_contents($_FILES['userfile']['tmp_name'])); ?>"> 
+0

我正在使用第一个选项。我确定数据uris会在某个时候派上用场! – Aristona

0

我在HTML有这样的...

<body> 
<img src="{{ URL::asset('img/my-image.png') }}" /> 
      my route where i have my img 

,这在我的控制器

public function getPdf($id){ 

    $html = View::make("backend.PDF.batch")->with('batchs',$batchs)->with('ad',$ad)->render(); 

     return PDF::load($html, 'A4', 'portrait')->show(); 
} 

,并在视图中不显示我的IMG他们说

DOMPDF_ENABLE_REMOTE is set to FALSE 
相关问题