将列表中的多个图像合并为 PDF

Posted

技术标签:

【中文标题】将列表中的多个图像合并为 PDF【英文标题】:Merge Multiple Images into PDF from List 【发布时间】:2021-12-18 03:50:33 【问题描述】:

我有数千张图像需要转换并组合成多个 PDF 文件。一些图像被多次使用。我正在寻找一种自动化的解决方案。

我将所有 .tif 文件命名并组织在一个电子表格中。我想使用该文件列表并运行一个自动化脚本来为自己节省数百个小时的时间来逐个转换这些文件。

所有文件都在同一个文件夹中。

我不是程序员。我尝试过查找某种文档、代码或第三方工具,但这似乎是一项不常见的任务。提前致谢。

我在 Windows 上。以下是电子表格的示例。我在 Excel 中使用公式制作我需要的任何格式或代码都没有问题。这些文件是许多扫描文档的单独页面。 “首页”是指一节的开头。示例:0066.tif-0068.tif 是一个文档,其中 0066.tif 是文档的标题页。 0070.tif-0081.tif 是三个单独的文件合二为一,0070.tif 作为所有三个文件的标题页。所以它将是 0070.tif-0072.tif、0070.tif & 0073.tif-0074.tif 和 0070.tif & 0075.tif-0081.tif。 0069.tif 是单页文档。

Document Title Page First Page Last Page
P-05593.pdf 0066.tif 0066.tif 0068.tif
P-05594.pdf 0069.tif 0069.tif 0069.tif
P-05595.pdf 0070.tif 0071.tif 0072.tif
P-05596.pdf 0070.tif 0073.tif 0074.tif
P-05597.pdf 0070.tif 0075.tif 0081.tif
P-05598.pdf 0082.tif 0083.tif 0084.tif
P-05599.pdf 0082.tif 0085.tif 0090.tif
P-05600.pdf 0091.tif 0091.tif 0093.tif
P-05601.pdf 0094.tif 0094.tif 0100.tif

更新: 我敢肯定这很少见。我找到了解决方案,以防万一有人遇到类似情况。

我使用了 Excel 和 nConvert 的组合。仍在研究一种更简单/更快的方法来识别哪些页面是哪些页面,因此目前这仍然是一个主要是手动过程。但是,在我制作完该列表后,我使用 Excel 公式和 VBA 命令将列表导出为 .bat 文件,我可以运行它来一次处理所有文件。不确定我是否能够发布文件,但这是我之前发布的文件表的代码输出,减去一些,因为这变得很长:

    nconvert
    C:\Users\username\NConvert\nconvert.exe -multi -dpi 200 -c 1 -out pdf -o P-05593.PDF -n 0066 0068 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -dpi 200 -c 1 -out pdf -o P-05594.PDF 0069.tif
    C:\Users\username\NConvert\nconvert.exe -multi -dpi 200 -c 1 -out pdf -o P-05595.PDF -n 0070 0072 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -overwrite -out pdf -o TEMPA 0070.tif
    C:\Users\username\NConvert\nconvert.exe -overwrite -multi -out pdf -o TEMPB -n 0073 0074 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -overwrite -D -multi -out pdf -dpi 200 -c 1 -xall -o P-05596.PDF TEMPA.pdf TEMPB.pdf
    C:\Users\username\NConvert\nconvert.exe -overwrite -out pdf -o TEMPA 0070.tif
    C:\Users\username\NConvert\nconvert.exe -overwrite -multi -out pdf -o TEMPB -n 0075 0081 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -overwrite -D -multi -out pdf -dpi 200 -c 1 -xall -o P-05597.PDF TEMPA.pdf TEMPB.pdf
    C:\Users\username\NConvert\nconvert.exe -multi -dpi 200 -c 1 -out pdf -o P-05598.PDF -n 0082 0084 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -overwrite -out pdf -o TEMPA 0082.tif
    C:\Users\username\NConvert\nconvert.exe -overwrite -multi -out pdf -o TEMPB -n 0085 0090 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -overwrite -D -multi -out pdf -dpi 200 -c 1 -xall -o P-05599.PDF TEMPA.pdf TEMPB.pdf
    C:\Users\username\NConvert\nconvert.exe -multi -dpi 200 -c 1 -out pdf -o P-05600.PDF -n 0091 0093 1 "####.tif"
    C:\Users\username\NConvert\nconvert.exe -multi -dpi 200 -c 1 -out pdf -o P-05601.PDF -n 0094 0100 1 "####.tif"

大量减少我的处理时间。 1,169 个文档中的 5,759 页,全部用这种方法在不到一个小时的时间内编译完毕。通常会花费我数周时间。

编辑:

好的。我回到这个线程是因为我解决了我的问题,但正如 cday 在我在Stack Overflow 上的帖子中指出的那样,它看起来过于复杂。他们似乎对解决方案很感兴趣,所以我会尝试解释我在这里做了什么,如果可能的话我会发布一个附件。

如前所述,我有多个文件夹,每个文件夹包含 5,000 多个原始 .tif 页面扫描。奇怪的文件类型选择,因为扫描它们的人没有保存多页,每个文件只有一页。这些扫描是带有标题页的编号文档,一些具有自己的标题页的单个文件,其他多个共享一个标题页的文件。我需要一种方法将这些单独的页面分解为每个文档编号的有组织的列表,有时会重新使用这些多文档标题页,因此直接的文件列表可能行不通。至少不容易。

我最初且非常缓慢的过程是手动滚动浏览每次扫描并将其文件名输入电子表格。然后,在资源管理器中突出显示这些文件,右键单击并在 Adob​​e 中组合。另存为。相应地命名文件。完成所有 1,600 多份文件后,我需要抽查以确保没有遗漏任何文件。我一直都是。因此,此解决方案不仅可以大大加快流程,还可以确保准确性。

长话短说,我在 Excel 中使用 VBA 编写了以下代码(付出了巨大的努力、反复试验和挫折):

键盘激活宏。充当电子表格的一种控制板。 提前文件编号以及当前查看的照片。 填写其他 Excel 公式以减少处理延迟。 (我需要对此进行调整,因为最终,当我接近列表末尾时,它会变慢。) 在系列中返回的宏以及使 Windows 照片查看器成为焦点。 填写页码以标识标题页、每个文档的第一页和普通页。 一系列 Excel IF 公式生成 nConvert 命令。 将 nConvert 命令列保存到 .bat 文件的按钮。不过,我在这方面遇到了困难。它保存了整个列,一直到 1048576,而不仅仅是填充的单元格。正在进行中。 我可以复制/粘贴的列向项目负责人报告进度。还用于参考哪些原始扫描文件包含在哪个文档 PDF 中。 某种内存缓存。我发现关闭文件时 Excel 不会保存变量值,所以我添加了一个单元格块来保存和加载变量的当前值。一个肮脏的解决方案,但它有效。作为奖励,如果我需要返回一个重要的方式或如果我需要跳过扫描文件,它也可以作为替代。

我想在没有上下文的情况下解释起来有点困难。我正在努力简化公式和 VBA 代码,因为这东西很丑。我更关注功能,而不是优雅。我会附上文件,但看起来我无法发布 Excel 文件。下面链接到我的 Dropbox。

Real Estate Spreadsheet

【问题讨论】:

请注意,这不是一个代码编写网站。你在这个任务中具体尝试了什么,你具体在哪里卡住了?请参阅How to Ask 和minimal reproducible example,也许可以使用tour。 我正在寻找一个起点。我尝试过使用 Excel VBA 命令和第三方工具,但这似乎是一项不常见的任务,而且我很难找到有关它的任何文档。我不是程序员。 我已更改我的帖子以更准确地反映我的目标和障碍。 由于图像似乎都以升序结构组合在一起,并且似乎没有什么完全乱序(例如,在较低的图像编号或跳过图像编号之前具有较高的图像编号或跳过图像编号?),我认为你最好打赌是首先将所有图像组合成几个更大的 PDF 文件(几百页),然后我会尝试使用功能强大的 PDF 编辑器,如 Adob​​e Acrobat Pro Action Wizzard,并自动提取您需要的“子文件”直接来自 PDF:helpx.adobe.com/acrobat/using/… 【参考方案1】:

来自 cday https://newsgroup.xnview.com/index.php

我前几天给你发了邮件,不知道你收到了吗?

您的问题引起了我的兴趣,我开发了简单的代码,单行 .bat 来批量转换 Excel 中适当格式的输出。我还没有发布它,因为它需要在 NConvert 选项中修复错误,并且可能对另一个选项进行小幅增强,这两者都可以很快实现。

快速查看上面的代码,它看起来不必要地复杂,但我会保留对它的判断。

如果您有兴趣,最好在那里与我联系,或者直接通过 PM 或电子邮件联系。

编辑:

为了其他可能感兴趣的人的利益,这是 Michael Clark 在 XnView 论坛上以不同用户名发布的原始帖子:

https://newsgroup.xnview.com/viewtopic.php?f=57&t=42567

这是我稍后在同一线程中的解决方案草案:

https://newsgroup.xnview.com/viewtopic.php?p=173583#p173583

【讨论】:

是的!谢谢你。是的,我倾向于过度复杂化,可能是因为我对此很陌生,而且我正在苦苦寻找解决方案。我记得收到了一条消息,但我找不到它,所以感谢您再次与我们联系。 哦,哇,我还没有意识到 xnview 留言板是这样继续的。奇怪的是我没有收到任何关于它的通知!

以上是关于将列表中的多个图像合并为 PDF的主要内容,如果未能解决你的问题,请参考以下文章

在 Linux 中将多个 jpg 合并为单个 pdf

Scrollview to PDF查看Android中的模糊

将png图像合并到一个pdf文件中[关闭]

使用 pypdf2 和电子邮件合并多个 PDf

以特定顺序将多个页面导出为 PDF

使用 PyPDF2 合并多个 pdf 文档中的页面