wmjordan / PDFPatcher

PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等
https://pdfpatcher.cnblogs.com/
9.05k stars 1.24k forks source link

针对扫描的PDF文档压缩 #214

Open zwo1a opened 2 months ago

zwo1a commented 2 months ago

使用场景 扫描文件太大,需要压缩

功能应该怎样实现 对于有图又有文、有排版的PDF文档来说压缩是比较困难的,但是扫描的文档一页就是一张图,是有办法解决的: 目前可以通过 PDFPatcher 已有的提取图片功能将图片导出,然后使用批量压缩图片的其他软件缩水分辨率、转换图片格式,然后再用合并文档功能重新合并为PDF。

类似软件 Adobe Acrobat https://github.com/ocdi/PdfShrinker

其它内容

  1. issues205:能否添加先进的图像优化算法用于压缩PDF
  2. PDF 压缩,过去已被讨论过无数次,对于没有经验的人来说是痛点问题。经常看到有人因为无法压缩 PDF,而使用某些软件或在网页上查找 PDF 压缩网站,他们十万火急时发现下载要付费,这时很多人就被这些”奸诈“的商家”乘火打劫“。虽然提升信息素养才是解决问题的根本之道,但某些用户真的需要”一键“。
wmjordan commented 2 months ago

我不掌握高效压缩的图像处理算法,针对特定图片处理也有大量的现成工具,只是修改了图片之后不方便重新写入图文混排的PDF文档。也许可以做一个这样的功能,将所有图片编号,导出到一个文件夹,然后用户可以修改图片(可以改文件类型,但不能改文件名),之后使用重写图片的功能,把修改过的图片重新写入文档。

lforlgg commented 2 months ago

我不掌握高效压缩的图像处理算法,针对特定图片处理也有大量的现成工具,只是修改了图片之后不方便重新写入图文混排的PDF文档。也许可以做一个这样的功能,将所有图片编号,导出到一个文件夹,然后用户可以修改图片(可以改文件类型,但不能改文件名),之后使用重写图片的功能,把修改过的图片重新写入文档。

解包并修改pdf的内在文件。这样的软件有不少了,并且免费,比如马健先生那边的免费小工具里就有,解出来,修改调整,压回去都有,一条龙了。另外系列pdf付费工具里这个也比较常见。

zwo1a commented 2 months ago

我不掌握高效压缩的图像处理算法,针对特定图片处理也有大量的现成工具,只是修改了图片之后不方便重新写入图文混排的PDF文档。也许可以做一个这样的功能,将所有图片编号,导出到一个文件夹,然后用户可以修改图片(可以改文件类型,但不能改文件名),之后使用重写图片的功能,把修改过的图片重新写入文档。

解包并修改pdf的内在文件。这样的软件有不少了,并且免费,比如马健先生那边的免费小工具里就有,解出来,修改调整,压回去都有,一条龙了。另外系列pdf付费工具里这个也比较常见。

这位朋友应该指的是马健的 ComicEnhancerPro,确实是很实用的软件。

想让图像的文件大小减少,常用的方式有几种:

  1. 缩减分辨率、缩减采样精度
  2. 转换图像格式:如将无损格式转换为有损格式
  3. 调整质量参数和压缩级别:对于JPEG,可以降低 JPEG 的质量参数;对于 PNG 可以调整压缩级别。
  4. 对图像进行优化:如调整色阶、亮度、对比度使扫描图像效果更好的同时,会同时减少数据量。
  5. 缩减色彩数:如将彩色图像转为灰度图像;对于纯黑白的扫描图像,可将其进行二值化(转为单色图像),可以有效减少图像的文件大小。

前3种方式,应该是可以比较容易做成“一键”的功能: 输入图像->降低分辨率->如果是 PNG 格式的彩色图像,转为 JPEG->判断大小是否实际减少,否则保留原始图像

以上这些方式,在目前 PDFPatcher 的 “转换为图片” 页面的选项中基本都有。(包括减少分辨率、减少颜色、调整 JPEG 质量、图像格式)但是在“提取图片”功能中只可以提取原始质量的图像。

对于先前 issues205 提到的“高效压缩的图像处理算法”,我认为“传统的图像处理算法”其实质量并没有非常糟糕,只不过 Acrobat 菜单中的“减少文件大小”功能会把质量参数调得非常低,所以图像很糊,产生非常多的压缩伪影。 对于有一定经验的用户、想要精心调整调整电子书的,一般他们都已经有自己的工具了。而需要这项功能的,是追求快捷或经验较少的用户,所谓的“传统的图像算法”大抵是已经够用了,他们是不追求“把图像压缩、优化到极致”的。

wmjordan commented 2 months ago

前3种方式,应该是可以比较容易做成“一键”的功能: 输入图像->降低分辨率->如果是 PNG 格式的彩色图像,转为 JPEG->判断大小是否实际减少,否则保留原始图像 ...... 需要这项功能的,是追求快捷或经验较少的用户,所谓的“传统的图像算法”大抵是已经够用了

嗯,这种简化问题的思路也是非常合理的,也许可以有“一键”的解决方案。

lforlgg commented 2 months ago

嗯,这种简化问题的思路也是非常合理的,也许可以有“一键”的解决方案。

对的,国产最主流的foxit福昕PDF编辑就有。其他还有PDF Compressor一类的一众小软件也有... 并且做的很成熟了。

A01_ziped

A02_ziped