Php ConvertAPI结果数组而不是结果文件

Php ConvertAPI结果数组而不是结果文件,php,convertapi,Php,Convertapi,我正在尝试将PDF拆分为单独的页面,然后使用用户提供的组织模式(如如何在Word中打印各种页面),然后将单独的页面合并为单独的文档并将其保存到磁盘 我的问题是,当我尝试保存时,会出现以下异常: is_file()要求参数1为有效路径,给定对象 进一步挖掘后,我认为问题在于我向ConvertApi::convert()方法提供了Result类型的对象,而不是ResultFile类型的对象 我当前的实现通常如下所示: $pdf = new Pdf_ConvertApi($input); $pdf-&

我正在尝试将PDF拆分为单独的页面,然后使用用户提供的组织模式(如如何在Word中打印各种页面),然后将单独的页面合并为单独的文档并将其保存到磁盘

我的问题是,当我尝试保存时,会出现以下异常:

is_file()要求参数1为有效路径,给定对象

进一步挖掘后,我认为问题在于我向ConvertApi::convert()方法提供了Result类型的对象,而不是ResultFile类型的对象

我当前的实现通常如下所示:

$pdf = new Pdf_ConvertApi($input);
$pdf->chunk(['method'=>'pattern', 'chunkPattern'=>[1, '3-4']]);
$pdf->write();
public function write($outputPaths=null)
{
...
   foreach($this->preparedDocuments as $idx=>$document)
   {
      $outputFile = $outputPaths[$idx];

      $mergeResult = ConvertApi::convert('merge', ['File' => $document]);
      $savedFiles[$idx]  = $mergeResult->saveFiles($outputFile);
   }
   return $savedFiles;
}

在构造函数中,我拆分PDF文件,并将各个页面保存在$this->rawFiles中

public function __construct($input, $parameters = [])
{
   if (is_array($input)) $key = 'Files';
   else $key = 'File';

   $this->splitResult = ConvertApi::convert('split', [$key => $input]);
   $this->rawFiles = $this->splitResult->getFiles();
}
然后在chunk方法中,我使用提供的模式分配$this->preparedDocuments数组,该数组是一个多级数组,顶层是一个单独的文档,下一级包含$this->rawFiles中的适当值

...
$patterns = <what pages to include>
...
foreach ($patterns as $idx => $docPattern)
{
// ... reList() converts patterns like "2-5" into the list [2, 3, 4, 5]
   $document = $this->reList($docPattern, count($this->rawFiles)); 
   $newDoc = [];

   foreach ($document as $pageNumber)
   {
      $pg       = $pageNumber - 1;          // convert to zero-based
      $newDoc[] = $this->rawFiles[$pg];
   }
   $documents[$idx] = ConvertApi::convert('merge', ['Files' => $newDoc]);
}
...
$this->preparedDocuments=$documents;        }

我的期望是,构造器基本上是这样做的:

$splitResult = ConvertApi::convert('split', ['File' => 'files/test.pdf']);
$files = $splitResult->getFiles();
$firstPage = $files[0];
$lastPage = end($files);
$firstAndLast = [$firstPage, $lastPage];
chunk()方法正在执行以下操作:

$splitResult = ConvertApi::convert('split', ['File' => 'files/test.pdf']);
$files = $splitResult->getFiles();
$firstPage = $files[0];
$lastPage = end($files);
$firstAndLast = [$firstPage, $lastPage];
write()方法就是这样做的:

$mergeResult = ConvertApi::convert('merge', ['Files' => $firstAndLast]);
$savedFiles = $mergeResult->saveFiles($dir);
但是,“firstAndLast”值数组中的值似乎包含结果对象,而不是预期的ResultFile对象


这是我第一次尝试使用ConvertAPI,因此非常感谢您提供的任何见解或建议。

您的问题非常复杂,但通常您正在进行拆分和合并,就像本例中所示:

此示例正在运行,
merge
接受来自
split
输出的文件结果

我建议您以较小的步骤实现脚本-首先修改此示例以处理多个块,然后将其重构到类中