在Php中按页面范围将PDF分割成块[已关闭]

1qczuiv0  于 2022-12-17  发布在  PHP
关注(0)|答案(4)|浏览(253)

**已关闭。**此问题不符合Stack Overflow guidelines。当前不接受答案。

我们不允许问题寻求有关书籍、工具、软件库等的推荐。你可以编辑问题,以便可以使用事实和引用来回答问题。
昨天关门了。
Improve this question
所以在浏览了许多软件包像TCPDF,FPDP,DOM 2 PDF和许多其他优秀的php pdf软件包后,我找不到这个功能在任何软件包中,它允许按页面范围分割pdf文件.例如,我想从20-100或30-50页分割pdf.或者从20-100页范围的pdf创建一个pdf.那么有没有任何库有这个功能?

gopyfrb3

gopyfrb31#

PDFMerger就有这个功能,我个人很享受它的简洁。

$pdf = new PDFMerger;
$pdf->addPDF('pdf1.pdf','20-100');
$pdf->addPDF('pdf2.pdf','30-50');
$pdf->merge(); // output PDF, you can specify additional parameters here
7qhs6swi

7qhs6swi2#

您可以使用FPDIFPDF的组合来实现这一点。

$new_pdf = new setasign\Fpdi\FPDI();
        
for($i = 20; $i <= 200; $i++){
    $new_pdf->AddPage();
    $new_pdf->setSourceFile("source.pdf");
    $new_pdf->useTemplate($new_pdf->importPage($i));
}

$new_pdf->Output("output.pdf", "F");
sqxo8psd

sqxo8psd3#

如果任何其他有问题的pdf版本〉1.4,你想拆分的pdf避免使用FPDI或任何其他php库,你可以使用下面的选项,工作完美:
https://www.ubuntubuzz.com/2016/01/how-to-split-pdf-with-pdfseparate.html
这是一个非常简单命令行
拆分所有页面

pdfseparate <source_pdf_file> <name>-%d.pdf

仅拆分所选页面

pdfseparate -f 1 -l 3 <source_pdf_file> <name>-%d.pdf

仅拆分第一页

pdfseparate -f 1 -l 1 <source_pdf_file> <name>-%d.pdf

仅拆分最后一页

pdfseparate -f 8 -l 8 <source_pdf_file> <name>-%d.pdf

我已经在我的本地环境中使用宅基地vagrant和在生产环境中使用ubuntu18,16测试了这个命令。工作很好,比gs(幽灵脚本)更好。

c6ubokkw

c6ubokkw4#

<?php
   

use setasign\Fpdi\Fpdi;
function split_pdf($filename, $end_directory = false)
{
  
       
        $filename='backup_folderinfocommpunjab_2009/'.$file;
  
    $end_directory = $end_directory ? $end_directory : './';
    $new_path = preg_replace('/[\/]+/', '/', $end_directory.'/'.substr($filename, 0, strrpos($filename, '/')));
    
    if (!is_dir($new_path))
    {
        // Will make directories under end directory that don't exist
        // Provided that end directory exists and has the right permissions
        mkdir($new_path, 0777, true);
    }

    $pdf = new Fpdi();

    $pagecount = $pdf->setSourceFile($filename); // How many pages?
   $new_pdf = new Fpdi();
   $new_pdf->setSourceFile($filename);
    // Split each page into a new PDF
// 3 and 4 is the page no as exp 3 is staring page number and 5 is last page no
    for ($i = 3; $i <= 5; $i++) {
      $new_pdf->AddPage();
        $new_pdf->useTemplate($new_pdf->importPage($i));
    }   
        try {
            $new_filename = $end_directory.str_replace('.pdf', '', $filename).'_'.$i.".pdf";
            $new_pdf->Output($new_filename, "F");
            echo "Page ".$i." split into ".$new_filename."<br />\n";
        } catch (Exception $e) {
            echo 'Caught exception: ',  $e->getMessage(), "\n";
        }
    
}

// Create and check permissions on end directory!
split_pdf("filename.pdf", 'split/');

?〉

相关问题