0

我有一个表单,用户可以在其中填写输入框。在某些情况下,他们也可以选择图像。

问题是,我不想将图像文件保存在我们服务器上的某个位置,并为 PDF 提供如下 URL:

//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 文件的初学者,我什至不确定这是否可行。

如果可能的话,谁能给我一些建议?

附言。我为 Laravel 4 使用 DOMPDF 包。https://github.com/thujohn/pdf-l4

4

2 回答 2

1

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

从上传访问临时文件。

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

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

捕获图像的内容并将其作为 data-uri 值写入 HTML

dompdf 理解data-uris,因此您可以获取上传的文件,将其转换为 data-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'] ) ); ?>">
于 2013-10-04T19:48:47.510 回答
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
于 2016-04-18T13:08:20.313 回答