Fpdi实现pdf页面合并(php)

需求:

有一个pdf文件, 里面是a5 页面大小输出的, 现在想要将两张a5 打印到一张a4纸张上,
也就是想把这个pdf文件 每两页a5页面 合并为一张a4 页面.

解决:

a4纸的大小为 210 * 297mm, a5大小为210 * (297 /2)

.2pdf是合并之前的临时文件, 当合并成功后, 输出新的文件, 并删除 .2pdf临时文件

private function convertPdfA5ToA4(string $file_path, string $file_name): void
  {
      $pdf = new Fpdi();
      $pdf->SetPrintHeader(false);
      $pdf->setPrintFooter(false);

      try {
          $page_count = $pdf->setSourceFile($file_path . $file_name . '2.pdf');
          for ($pageNo = 1; $pageNo <= $page_count; $pageNo++) {
              //单数页
              if ($pageNo % 2 != 0) {
                  $templateId = $pdf->importPage($pageNo);
                  $size = $pdf->getTemplateSize($templateId, 210, 297);

                  // 添加一个竖向的a4页面
                  $pdf->AddPage('P', 'A4');
                  $pdf->useTemplate($templateId);
                  $pdf->SetFont('cid0cs', '', 9);
                  $pdf->SetXY(5, 5);
              } else { // 偶数页
                  $templateId = $pdf->importPage($pageNo);
                  $size = $pdf->getTemplateSize($templateId, 210, 153);

                  $pdf->useTemplate($templateId, 0, 153);
                  $pdf->SetFont('cid0cs', '', 9);
                  $pdf->SetXY(5, 5);
              }
          }
  		// 输出到浏览器
          $pdf->Output($file_name . '.pdf', 'D');
      } catch (Exception $e) {
          throw new TcctException('打印异常, 请稍后再试~');
      }

      if (file_exists($file_path . $file_name . '2.pdf')) {
          $bool = unlink($file_path . $file_name . '2.pdf');
      }

      return;
  }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值