簡體   English   中英

如何通過 imagemagick 從 pdf 中刪除一頁

[英]how delete one page from pdf by imagemagick

im Wana Delete One page from PDF By imagemagick ,這怎么辦? 這是我的代碼,它只返回 pdf 中的一頁? 什么問題?

 $image = new \Imagick(__DIR__.'/test.pdf');
    $pageNumber = $image->count();
    $page = true;
    $imgs = [];
    for($i=0 ; $i<$pageNumber ; $i++){

        $image->readImage(__DIR__.'/test.pdf['.$i.']');

        if($i === 2 && $page == true){
            $image->removeImage();
            $page = false;
            continue;
        }

        // $imgs[] = __DIR__.'images'.$i.'.jpg';
    }
    $image->setImageFormat("pdf");
    $image->writeImage('images.pdf');
   file_put_contents(__DIR__.'images'.$i.'.pdf',$image);

假設原始 pdf 有 5 頁(稱為 fivepage.pdf),那么您可以使用以下步驟從中刪除第 3 頁並生成新的 pdf,稱為 combined.pdf

  1. 使用 Imagick 打開 pdf
  2. 確定頁數
  3. 遍歷此 pdf 的每一頁
  4. 將頁面保存到單獨的臨時 jpeg 文件中
  5. 將 jpeg 文件(第 3 頁除外,$i==2)推入數組
  6. 使用數組生成“combined.pdf”
  7. 刪除所有臨時 jpeg 文件

所以代碼是:

<?php

$file="./fivepage.pdf";
$im = new Imagick($file);
$resultimages = array();
$noOfPagesInPDF = $im->getNumberImages(); 
 
        // loop over all the pdf pages

          for ($i = 0; $i < $noOfPagesInPDF; $i++) { 
              $url = $file.'['.$i.']'; 
              $image = new Imagick();
        
        //      $image->setResolution(300,300);
        // use the above line if you want higher resolution
              
              $image->readimage($url);
              $image->setImageFormat("jpg"); 
          
              $image->writeImage("./temp_".($i+1).'.jpg'); 

        // include all pages except page 3 ($i==2)
              if ($i!=2) {
              array_push($resultimages, "./temp_".($i+1).'.jpg');
              }

          } 

       // generate the resulting pdf (omitting page 3)
      $pdf = new Imagick($resultimages);
      $pdf->setImageFormat('pdf');
      $pdf->writeImages('combined.pdf', true); 

      // clear temp images
             for ($i = 0; $i < $noOfPagesInPDF; $i++) { 
             unlink("./temp_".($i+1).'.jpg'); 
             }


    echo "pdf without page 3 saved";


   ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM