痛点

在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文件相关推荐

  1. 批量合并多个PDF文件

    1.导入需要的模块. #导入模块 import os from PyPDF2 import PdfFileReader,PdfFileMerger 2.编写函数,我这里命名为Merge_PDF,函数里 ...

  2. Python——dat文件批量合并为同一个csv文件

    Python--dat文件批量合并为同一个csv文件 目的:将文件夹ZW下的所有dat文件(含子文件夹)合并,并保存到results.csv中,便于后续使用excel进行处理与分析. 代码: #!/u ...

  3. linux find 删除文件夹,linux中find与rm实现查找并删除目录或文件linux操作系统 -电脑资料...

    在linux中find是查找搜索文件而rm是删除文件,下面我们来看一篇linux中find与rm实现查找并删除目录或文件的实例,希望文章对大家会有所帮助, 删除指定目录下指定文件 find 要查找的目 ...

  4. Linux中7个用来浏览网页和下载文件的命令

    上一篇文章中,我们提到了rTorrent.wget.cURL.w3m.Elinks等几个有用的工具,很多人回信说还有其它几个类似的工具也值得讨论,所以就有了这篇文章.如果错过了第一部分的讨论,可以通过 ...

  5. linux 查找后删除目录,linux中find与rm实现查找并删除目录或文件

    linux 下用find命令查找文件,rm命令删除文件. 删除指定目录下指定文件 find 要查找的目录名 -name .svn |xargs rm -rf 删除指定名称的文件或文件夹: find - ...

  6. 如何在使用Latex包pdfpages合并后的pdf文件中显示页码

    现象 使用Latex包pdfpages合并后的pdf文件中没有页码. 原因 \includepdf和\includepdfmerge命令会默认插入"\thispagestyle{empty} ...

  7. Linux中使用du -d n 显示当前文件目录下文件夹的大小

    Linux中使用du -d n 显示当前文件目录下文件夹的大小 du -d n 其中 du 代表disk usage 硬盘使用 d 代表directory n 代表显示当前目录下文件夹的层数 root ...

  8. 合并 多个pdf文件_如何在多个子文件夹中合并合并PDF文件

    合并 多个pdf文件 Article Update 13-March-2020: I removed the source code. The article that remains should ...

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

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

最新文章

  1. React入门指引与实战
  2. Linux文件/目录 所有者/所在组
  3. 机器学习-转换器与估计器05
  4. EF Core 异步编程注意要点
  5. codeforces 122A-C语言解题报告
  6. socket网络编程ftp
  7. mariadb mysql 配置文件_Mariadb配置文件优化参数(仅供参考)
  8. ROS入门 小乌龟跟随示例
  9. 软件测试的几大误区(带你踩坑)
  10. 控制理论与控制工程_控制理论与控制工程专业介绍_研究方向_就业前景分析
  11. rviz可视化点云_ROS_PCL+Rviz创建点云并三维显示
  12. 代码分析测试SaaS平台Code Climate获得450万美元A轮融资
  13. 前端程序员简历模板整理和下载
  14. 初学者必读VRay 2.0材质设置(2)——反射材质的表现
  15. happybase对hbase数据库的基本操作
  16. 微信朋友圈广告,杀鸡取卵?
  17. redis 常用监控指标
  18. 数据库表的主键、唯一约束和索引
  19. 商业人像精修皮肤质感增加PS插件_安装说明
  20. 单片机5V输出驱动控制24V外设电路设计方案

热门文章

  1. 机器学习论文:《LightGBM: A Highly Efficient Gradient Boosting Decision Tree》
  2. LightGBM算法详解(教你一文掌握LightGBM所有知识点)
  3. 兔子、狼、老虎的故事
  4. CCD摄像机主要技术参数解释
  5. 关于Windows10的dll文件缺失报错---解决方法
  6. Tita绩效宝:绩效管理评语范例
  7. 聚观早报 | 茅台市值超过腾讯位列第一;三星正研发智能戒指
  8. 论python在金融行业的重要性_论金融在各行业的重要性
  9. arm-linux东东之nand之2:3c2440_nand_probe
  10. 探索一下进制转换 (Python 实现源码)