目录

参考资料FPDF   下载网址  http://www.fpdf.org/FPDI     下载网址 FPDI free PDF document importer ▷ setasign.com————————————————

效果图

实现代码


参考资料
FPDF   下载网址  http://www.fpdf.org/
FPDI     下载网址  https://www.setasign.com/products/fpdi/about/
————————————————

效果图

实现代码

    /*多个PDF合一*@param array  $files  多个PDF的绝对路径*@param string  $number  文件名* */public function pdf_synthetic(array $files,  $number): array{import('fpdf.fpdf', EXTEND_PATH);import('fpdi.fpdi', EXTEND_PATH);// define some files to concatenate$pdf = new \Fpdi();//Ln//增加大pdf合成和 新路径标识// iterate through the filesforeach ($files AS $file) {if (!file_exists($file)) {$return_info['code'] = 'error';$return_info['data'] = '文件不存在:' . $file;return $return_info;}// get the page counttry {$pageCount = $pdf->setSourceFile($file);} catch (\Exception $e) {$return_info['code'] = 'error';$return_info['data'] = '合并失败: ' . $e->getMessage();return $return_info;}// iterate through all pagesfor ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {// import a page$templateId = $pdf->importPage($pageNo);// get the size of the imported page$size = $pdf->getTemplateSize($templateId);// create a page (landscape or portrait depending on the imported page size)if ($size['w'] > $size['h']) {$pdf->AddPage('L', array($size['w'], $size['h']));} else {$pdf->AddPage('P', array($size['w'], $size['h']));}// use the imported page$pdf->useTemplate($templateId);$pdf->SetFont('Helvetica');$pdf->SetXY(5, 5);//$pdf->Write(8, 'A simple concatenation demo with FPDI');}}// Output the new PDF$directory=ROOT_PATH.'public';//根目录$path     = $directory. '/static/uploads/synthetic/' . date('Ym') . '/';//检测并创建文件夹if ($this->exists_dir($path) === false) {$return_info['code'] = 'error';$return_info['data'] = '目录不存在 ';return $return_info;}$new_pdf_name_path = $path . $number . '.pdf';$new_pdf_name      = '/static/uploads/synthetic/' . date('Ym') . '/' . $number . '.pdf';$pdf->Output($new_pdf_name_path, 'f');$return_info['code'] = 'success';$return_info['data'] = $new_pdf_name;return $return_info;}/*** Notes: 检测文件夹是否存在 不存在自动创建文件夹* User: ZHOU WEI YUN* Date: 2021/3/23 0023* Time: 上午 10:51* @param string $path 文件的绝对路径* @return bool  false 文件创建失败 其他返回为true*/public function exists_dir(string $path): bool{if (file_exists($path) === false) {$path     = str_replace("\\", '/', $path);$path_arr = explode('/', $path);$ping     = '';//循环逐级检测 不存在则创建foreach ($path_arr as $k => $v) {$ping .= $v . '/';if (file_exists($ping) === false && !mkdir($ping, 755) && is_dir($ping)) {return false;}}}return true;}public function demo(){PRINT_R($this->pdf_synthetic([ROOT_PATH.'public/static/uploads/preview/202202/demo.pdf',ROOT_PATH.'public/static/uploads/preview/202202/demo.pdf'],'demo'));}

php合并PDF FPDI相关推荐

  1. python自动办公 pdf_Python办公自动化|批量合并PDF,拿来就用

    系列导读 Python办公自动化|从Word到Excel​mp.weixin.qq.comPython办公自动化|从Excel到Word​mp.weixin.qq.com 大家好,今天分享一个实用的办 ...

  2. python合并pdf 加书签_使用Python批量合并PDF文件(带书签功能)

    1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 ''' 4 #文件名:pdfmerge.py5 本脚本用来合并pdf文件,输出的pdf文件按输入 ...

  3. mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法

    在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...

  4. shell换行合并多个文件_如何合并多个pdf文件?这里有合并PDF最简单的方法

    如何合并多个pdf文件?今天在整理一些PDF文件的时候,由于文件的数量比较多,我就想着将这些PDF文件合并起来,好在平时也了解了一些PDF合并的方法,很快就完成了文件的合并.想到应该还有很多朋友还不知 ...

  5. vba 当前文件名_VBA实践+批量合并pdf

    VBA实践+批量合并pdf 声明:文章仅供参考,尝试,请注意备份文件. 作用:把文件夹下若干个小文档合并成一个大文档. 以下代码创建一个空白pdf文档,然后依次把文件夹下的所有小pdf文档插入到该文档 ...

  6. Java合并pdf文件

    Java合并pdf文件 今天帮老师整理资料需要合并pdf文件,下了许多软件发现都需要VIP才行,所以写了个程序来帮助合并,直接在主程序中修改文件路径即可,如下图: 主要代码如下: package co ...

  7. C# / VB.NET合并PDF指定页

    在前面的文章中,我们已经知道如何合并.拆分多个PDF文件,在这篇文章中的合并.拆分PDF文档主要是以方便文档管理的目的来操作文档,在文档查阅.管理及存储上很方便实用.但是我们如果想要合并多个文档中的部 ...

  8. java pdf无法加载_java - 试图使用iText7合并来合并pdf,但是当我打开最终的合并pdf时,它说无法加载pdf文档 - SO中文参考 - www.soinside.com...

    试图使用iText7合并来合并pdf,但是当我打开最终的合并pdf时,它说无法加载pdf文档 问题描述 投票:0回答:1 我正在使用itext7 PdfWriter创建两个ByteArrayOutpu ...

  9. 页面显示pdf_PDF怎样合并?在Mac上合并PDF文件的最佳方法

    在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...

最新文章

  1. RESTFUL框架-网站即软件
  2. C#动态调用webservice
  3. 日志库EasyLogging++学习系列(1)—— 简要介绍
  4. #研发解决方案#数据移山:接入、迁移、同步一站式
  5. Linux环境下使用NLPIR(ICTCLAS)中文分词详解
  6. Python学习笔记——输入与输出用法
  7. 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
  8. Download Microsoft Visual Studio 2010 Ultimate Trial - ISO from Official Microsoft Download Center
  9. JSON对象中的函数调用,JSON格式的字符串对应的函数调用方法
  10. 深入解读Linux进程调度系列(3)——调度的执行过程
  11. mysql5.7bka_mysql 5.7中的MRR和BKA算法
  12. 535. Encode and Decode TinyURL - LeetCode
  13. 前端:【学成在线项目】HTML+CSS详细制作过程(代码只做参考)
  14. 天学网 语音算法工程师面经
  15. arp表老化时间及其修改
  16. 商务谈判类毕业论文文献有哪些?
  17. 【数理统计】02. 抽样分布与次序统计量
  18. 调制解调器和路由器的区别:
  19. 飞一般的感觉——掌智手机助手使用感受
  20. Flutter高德地图系列——开篇

热门文章

  1. labview通过串口控制风扇
  2. 区块链布道者-----Shell Wallet
  3. Crontab语法规则格式、使用方式及日志查看
  4. 怎么电脑计算机管理员去掉,电脑取消管理员密码设置在哪里
  5. 图表库:ECharts 、 BizCharts 和 G2使用体验
  6. r5 5600x配什么主板和显卡
  7. thinkvd powerpoint to video更新
  8. 使用Glove词嵌入对IMDB数据集进行二分类
  9. js深入了解——正则表达式测试工具demo
  10. Android 等间距布局