Linux中如何优雅的批量合并、拆分、加密pdf文件
痛点
在windows中合并个pdf还要让你冲会员,真的是狗。linux下有没有一款工具能完成对pdf的合并、切分的工具呢?
有:
PDFtk
功能
* Merge PDF Documents or Collate PDF Page Scans* Split PDF Pages into a New Document* Rotate PDF Documents or Pages* Decrypt Input as Necessary (Password Required)* Encrypt Output as Desired* Fill PDF Forms with X/FDF Data and/or Flatten Forms* Generate FDF Data Stencils from PDF Forms* Apply a Background Watermark or a Foreground Stamp* Report PDF Metrics, Bookmarks and Metadata* Add/Update PDF Bookmarks or Metadata* Attach Files to PDF Pages or the PDF Document* Unpack PDF Attachments* Burst a PDF Document into Single Pages* Uncompress and Re-Compress Page Streams* Repair Corrupted PDF (Where Possible)
安装
OS Version
CentOS Linux release 7.8.2003 (Core)
安装依赖
yum install -y gcc gcc-c++ libXrandr gtk2 libXtst libart_lgpl
安装 pdftk 2.02
yum localinstall https://www.linuxglobal.com/static/blog/pdftk-2.02-1.el7.x86_64.rpm
pdftk 使用
合并pdf
pdftk ./PDF/*.pdf cat output merge.pdf
也支持枚举文件合并
pdftk ./PDF/1.pdf ./PDF/2.pdf cat output merge.pdf
切分pdf
将PDF 拆分成单页并将其数据转储到 doc_data.txt
Splits a single input PDF document into individual pages
pdftk merge.pdf burst
目前没找到按照大小切分的选项,这个选项打散成每页之后再自己按需求merge
压缩pdf
pdftk ./merge.pdf cat output merged-copmress.pdf compress
压缩效果不明显,建议使用convert 、gs
品质和大小的trade-off
Pixelated (lossy):
convert input.pdf -compress Zip output.pdf
Unpixelated (lossless, but may display slightly differently):
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dBATCH -dQUIET -sOutputFile=output.pdf input.pdf
issue
1、本地执行内存不足warning
GC Warning: Repeated allocation of very large block (appr. size 139264):May lead to memory leak and poor performance.
如何将pdftk迁移到其他机器上执行
直接copy二进制文件过去,无法执行
pdftk ./PDF/*.pdf cat output merge.pdf
pdftk: error while loading shared libraries: libgcj.so.10: cannot open shared object file: No such file or directory
如何将该二进制命令所需库文件复制一份?
ldd命令可以完成
ldd /bin/pdftk | egrep -o '/lib.*\.[0-9]'
/lib64/libgcj.so.1
/lib64/libstdc++.so.6
/lib64/libm.so.6
/lib64/libgcc_s.so.1
/lib64/libc.so.6
/lib64/libpthread.so.0
/lib64/librt.so.1
/lib64/libdl.so.2
/lib64/libz.so.1
/lib64/ld-linux-x86-64.so.2
使用如下小脚本将pdftk依赖的so文件copy到性能好一点的机器上去.
list=$(ldd /bin/pdftk | egrep -o '/lib.*\.[0-9]')
for i in $list; do scp -p "$i" ip:/lib64/; done
libgcj.so.10 仍然缺失
发现该文件并没有被copy过来,或许是这个正则写的有点问题。后来发现并不是,因为在/usr目录
解决: 使用find找到然后copy过去。没有外网真的很痛苦。
find /usr -name "libgcj.so*"
/usr/lib64/libgcj.so.10
如何改造这个正则以匹配到
⚡ root@localhost /tmp ldd /bin/pdftk | egrep -o '*/lib.*\.[0-9]'
/lib64/libgcj.so.1
/lib64/libstdc++.so.6
/lib64/libm.so.6
/lib64/libgcc_s.so.1
/lib64/libc.so.6
/lib64/libpthread.so.0
/lib64/librt.so.1
/lib64/libdl.so.2
/lib64/libz.so.1
/lib64/ld-linux-x86-64.so.2⚡ root@localhost /tmp ldd /bin/pdftk | egrep -o '*/lib.*\.[0-9]+'
/lib64/libgcj.so.10
/lib64/libstdc++.so.6
/lib64/libm.so.6
/lib64/libgcc_s.so.1
/lib64/libc.so.6
/lib64/libpthread.so.0
/lib64/librt.so.1
/lib64/libdl.so.2
/lib64/libz.so.1
/lib64/ld-linux-x86-64.so.2
windows GUI的限制
free版本只能合并、拆分
pro版本split, merge, rotate, watermark, stamp and secure PDF pages and documents 。3,99$
Linux中如何优雅的批量合并、拆分、加密pdf文件相关推荐
- 批量合并多个PDF文件
1.导入需要的模块. #导入模块 import os from PyPDF2 import PdfFileReader,PdfFileMerger 2.编写函数,我这里命名为Merge_PDF,函数里 ...
- Python——dat文件批量合并为同一个csv文件
Python--dat文件批量合并为同一个csv文件 目的:将文件夹ZW下的所有dat文件(含子文件夹)合并,并保存到results.csv中,便于后续使用excel进行处理与分析. 代码: #!/u ...
- linux find 删除文件夹,linux中find与rm实现查找并删除目录或文件linux操作系统 -电脑资料...
在linux中find是查找搜索文件而rm是删除文件,下面我们来看一篇linux中find与rm实现查找并删除目录或文件的实例,希望文章对大家会有所帮助, 删除指定目录下指定文件 find 要查找的目 ...
- Linux中7个用来浏览网页和下载文件的命令
上一篇文章中,我们提到了rTorrent.wget.cURL.w3m.Elinks等几个有用的工具,很多人回信说还有其它几个类似的工具也值得讨论,所以就有了这篇文章.如果错过了第一部分的讨论,可以通过 ...
- linux 查找后删除目录,linux中find与rm实现查找并删除目录或文件
linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件 find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find - ...
- 如何在使用Latex包pdfpages合并后的pdf文件中显示页码
现象 使用Latex包pdfpages合并后的pdf文件中没有页码. 原因 \includepdf和\includepdfmerge命令会默认插入"\thispagestyle{empty} ...
- Linux中使用du -d n 显示当前文件目录下文件夹的大小
Linux中使用du -d n 显示当前文件目录下文件夹的大小 du -d n 其中 du 代表disk usage 硬盘使用 d 代表directory n 代表显示当前目录下文件夹的层数 root ...
- 合并 多个pdf文件_如何在多个子文件夹中合并合并PDF文件
合并 多个pdf文件 Article Update 13-March-2020: I removed the source code. The article that remains should ...
- shell换行合并多个文件_如何合并多个pdf文件?这里有合并PDF最简单的方法
如何合并多个pdf文件?今天在整理一些PDF文件的时候,由于文件的数量比较多,我就想着将这些PDF文件合并起来,好在平时也了解了一些PDF合并的方法,很快就完成了文件的合并.想到应该还有很多朋友还不知 ...
最新文章
- React入门指引与实战
- Linux文件/目录 所有者/所在组
- 机器学习-转换器与估计器05
- EF Core 异步编程注意要点
- codeforces 122A-C语言解题报告
- socket网络编程ftp
- mariadb mysql 配置文件_Mariadb配置文件优化参数(仅供参考)
- ROS入门 小乌龟跟随示例
- 软件测试的几大误区(带你踩坑)
- 控制理论与控制工程_控制理论与控制工程专业介绍_研究方向_就业前景分析
- rviz可视化点云_ROS_PCL+Rviz创建点云并三维显示
- 代码分析测试SaaS平台Code Climate获得450万美元A轮融资
- 前端程序员简历模板整理和下载
- 初学者必读VRay 2.0材质设置(2)——反射材质的表现
- happybase对hbase数据库的基本操作
- 微信朋友圈广告,杀鸡取卵?
- redis 常用监控指标
- 数据库表的主键、唯一约束和索引
- 商业人像精修皮肤质感增加PS插件_安装说明
- 单片机5V输出驱动控制24V外设电路设计方案
热门文章
- 机器学习论文:《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》
- LightGBM算法详解(教你一文掌握LightGBM所有知识点)
- 兔子、狼、老虎的故事
- CCD摄像机主要技术参数解释
- 关于Windows10的dll文件缺失报错---解决方法
- Tita绩效宝:绩效管理评语范例
- 聚观早报 | 茅台市值超过腾讯位列第一;三星正研发智能戒指
- 论python在金融行业的重要性_论金融在各行业的重要性
- arm-linux东东之nand之2:3c2440_nand_probe
- 探索一下进制转换 (Python 实现源码)