php合并PDF FPDI
目录
参考资料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相关推荐
- python自动办公 pdf_Python办公自动化|批量合并PDF,拿来就用
系列导读 Python办公自动化|从Word到Excelmp.weixin.qq.comPython办公自动化|从Excel到Wordmp.weixin.qq.com 大家好,今天分享一个实用的办 ...
- python合并pdf 加书签_使用Python批量合并PDF文件(带书签功能)
1 #!/usr/bin/env python3 2 #-*- coding: utf-8 -*- 3 ''' 4 #文件名:pdfmerge.py5 本脚本用来合并pdf文件,输出的pdf文件按输入 ...
- mac怎么合并两个容器_PDF怎样合并?在Mac上合并PDF文件的最佳方法
在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...
- shell换行合并多个文件_如何合并多个pdf文件?这里有合并PDF最简单的方法
如何合并多个pdf文件?今天在整理一些PDF文件的时候,由于文件的数量比较多,我就想着将这些PDF文件合并起来,好在平时也了解了一些PDF合并的方法,很快就完成了文件的合并.想到应该还有很多朋友还不知 ...
- vba 当前文件名_VBA实践+批量合并pdf
VBA实践+批量合并pdf 声明:文章仅供参考,尝试,请注意备份文件. 作用:把文件夹下若干个小文档合并成一个大文档. 以下代码创建一个空白pdf文档,然后依次把文件夹下的所有小pdf文档插入到该文档 ...
- Java合并pdf文件
Java合并pdf文件 今天帮老师整理资料需要合并pdf文件,下了许多软件发现都需要VIP才行,所以写了个程序来帮助合并,直接在主程序中修改文件路径即可,如下图: 主要代码如下: package co ...
- C# / VB.NET合并PDF指定页
在前面的文章中,我们已经知道如何合并.拆分多个PDF文件,在这篇文章中的合并.拆分PDF文档主要是以方便文档管理的目的来操作文档,在文档查阅.管理及存储上很方便实用.但是我们如果想要合并多个文档中的部 ...
- java pdf无法加载_java - 试图使用iText7合并来合并pdf,但是当我打开最终的合并pdf时,它说无法加载pdf文档 - SO中文参考 - www.soinside.com...
试图使用iText7合并来合并pdf,但是当我打开最终的合并pdf时,它说无法加载pdf文档 问题描述 投票:0回答:1 我正在使用itext7 PdfWriter创建两个ByteArrayOutpu ...
- 页面显示pdf_PDF怎样合并?在Mac上合并PDF文件的最佳方法
在保存编辑内容的同时合并PDF文件可能是一个大问题.合并大文件时,"预览"不涵盖展平,并且会使系统变慢.这些和其他问题可能会迫使您寻找更好的选择.让我们探索在Mac上组合PDF以涵 ...
最新文章
- RESTFUL框架-网站即软件
- C#动态调用webservice
- 日志库EasyLogging++学习系列(1)—— 简要介绍
- #研发解决方案#数据移山:接入、迁移、同步一站式
- Linux环境下使用NLPIR(ICTCLAS)中文分词详解
- Python学习笔记——输入与输出用法
- 一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](五)
- Download Microsoft Visual Studio 2010 Ultimate Trial - ISO from Official Microsoft Download Center
- JSON对象中的函数调用,JSON格式的字符串对应的函数调用方法
- 深入解读Linux进程调度系列(3)——调度的执行过程
- mysql5.7bka_mysql 5.7中的MRR和BKA算法
- 535. Encode and Decode TinyURL - LeetCode
- 前端:【学成在线项目】HTML+CSS详细制作过程(代码只做参考)
- 天学网 语音算法工程师面经
- arp表老化时间及其修改
- 商务谈判类毕业论文文献有哪些?
- 【数理统计】02. 抽样分布与次序统计量
- 调制解调器和路由器的区别:
- 飞一般的感觉——掌智手机助手使用感受
- Flutter高德地图系列——开篇