合并PDF而不保存磁盘上的文件

时间:2016-11-16 15:55:53

标签: php variables pdf merge

在php中,在调用webservice之后,我在变量中有一些PDF内容。

我需要将pdf内容合并到一个变量中以生成一个PDF,然后将其发布到另一个Web服务。

我找到了一些基于GS exec或FPDI的解决方案,但这些解决方案迫使我在合并之前将文件保存在磁盘上。

有没有办法在不写入磁盘的情况下将其合并到变量中?

Php中的代码(我必须合并foreach的结果):

foreach($LogContent->DocumentsAnnexes->DocAnnexe as $parametre=>$value){
$content_brut=$value->fichier;
}
$content_maj=base64_decode($content_brut);
$OKMDocument->checkin(array('token' => $token, 'docPath' => $uuid, 'content' => $content_maj, 'comment' => 'Facture validée depuis le parapheur'));

(由于帖子的大小限制,我无法添加PDF示例)

2 个答案:

答案 0 :(得分:1)

您可以使用stream wrapper表示变量(例如this)来解决此问题。

答案 1 :(得分:0)

由于这个问题:

  

未捕获的例外'例外'有消息'本文件   (VarStream:// 0)可能使用的压缩技术不是   由FPDI附带的免费解析器支持。

我尝试在与GhostscriptConverter合并之前将PDF转换为1.4:

class ConcatPdf extends FPDI
{
    public $files = array();

    public function setFiles($file)
    {
        $this->files = $file;
    }

    public function concat()
    {
        foreach($this->files AS $file) {

$command = new GhostscriptConverterCommand();
$filesystem = new Filesystem();

$converter = new GhostscriptConverter($command, $filesystem);
$converter->convert(VarStream::createReference($file), '1.4');




//            $pageCount = $this->setSourceFile($file);
            $pageCount = $this->setSourceFile(VarStream::createReference($file));
            for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {

                $tplIdx = $this->ImportPage($pageNo);
                $s = $this->getTemplatesize($tplIdx);
                $this->AddPage($s['w'] > $s['h'] ? 'L' : 'P', array($s['w'], $s['h']));
                $this->useTemplate($tplIdx);
            }
        }
    }
}

但新问题:

  

[Mon Nov 21 17:31:32.103668 2016] [:error] [pid 400] [客户   192.168.21.2:53396] PHP致命错误:未捕获异常&#39; RuntimeException&#39;消息&#G; Ghostscript 9.06:不可恢复   错误,退出代码1 \ n&#39;在   /var/www/html/tests/soap_autre/vendor/xthiago/pdf-version-converter/src/Converter/GhostscriptConverterCommand.php:39\nStack   追踪:\ n#0   /var/www/html/tests/soap_autre/vendor/xthiago/pdf-version-converter/src/Converter/GhostscriptConverter.php(69):   Xthiago \ PDFVersionConverter \转换\ GhostscriptConverterCommand-&gt;运行(&#39; VarStream:// 0&#39 ;,   &#39; / tmp / pdf_versio ...&#39;,&#39; 1.4&#39;)\ n#1   /var/www/html/tests/soap_autre/test.php(234):   Xthiago \ PDFVersionConverter \转换\ GhostscriptConverter-&GT;转换(&#39; VarStream:// 0&#39 ;,   &#39; 1.4&#39;)\ n#2 /var/www/html/tests/soap_autre/test.php(263):   ConcatPdf-&gt; concat()\ n#3 {main} \ n抛出   /var/www/html/tests/soap_autre/vendor/xthiago/pdf-version-converter/src/Converter/GhostscriptConverterCommand.php   第39行

我不知道该怎么做!