代码之家  ›  专栏  ›  技术社区  ›  Nono

在PHP7.3中将PDF文件的页面提取为新的PDF文件

  •  0
  • Nono  · 技术社区  · 5 年前

    我有一个PDF文件,我想在原始文件的基础上创建两个新文件。第一个新文件应获得原始文件的第1、2和4页,第二个新文件应获得原始文件的第3页。在PHP7.3中,最好的方法是什么?我发现了一个旧图书馆 here ,但我不想在代码中添加这么旧的库。除此之外,我还找到了一些云解决方案,但这也不是我想要的。没有简单的“现代”解决方案吗?

    1 回复  |  直到 5 年前
        1
  •  1
  •   kswzr    5 年前

    我用过 Mpdf 对于一个同样的问题。通过执行以下操作,您可以轻松创建新的pdf文档并导入pdf的现有页面:

    <?php
    
    $sourceFilePath = '/tmp/my-pdf-with-4-pages.pdf';
    $destinationFilePath = 'output/my-pdf-with-3-pages.pdf';
      
    $mpdfConfig = [];
    $mpdf = new Mpdf($mpdfConfig);
    
    // $mpdf->SetImportUse(); only necesseray for mpdf >=4 && <8
    $pageCount = $mpdf->setSourceFile($sourceFilePath); // number of pages in your source pdf file 
    
    $pageNumbersToImport = [1,2,3];
    $pageNumbersToImportCount = count($pageNumbersToImport);
    
    // importing pages defined in $pageNumbersToImport
    for ($pageNumber = 1; $pageNumber <= $pageCount; $pageNumber++) {
      if (!in_array($pageNumber, $pageNumbersToImport, true)) {
        continue;
      }
      
        $templateId = $mpdf->ImportPage($pageNumber); // get page content of page number as template of source pdf file
      $mpdf->UseTemplate($templateId); // add page number of source file to current mpdf generated file
      
      if ($pageNumber < $pageNumbersToImportCount) {
        $mpdf->AddPage(); // add empty page
      }
    }
    
    $mpdf->Output($destinationFilePath, 'F'); // write new pdf file, with pages 1-3 of source file