根据文件名的第一部分合并PDF文件 - 如何自动化?

时间:2017-06-22 20:27:16

标签: vba batch-file pdf merge pdftk

我能够修改我在此处找到的示例VBA代码,以生成PDF文件中的excel个文件。在此编码运行后,结果是我将有多个PDF个文件,后缀为"-index.pdf" - (例如,875458-indexl.pdf)我可以将后缀更改为任何内容。

我将从zip文件中提取另一组PDF文件,文件名与875458.pdf相同。

最后,在一个文件夹中,将有多对文件,如下所示。

875458.pdf
875458-index.pdf
875460.pdf
875460-index.pdf
954784.pdf
954784-index.pdf

我的目标是找到一个w

将每对文件合并到一个文件中。

最终结果如下。

(Indexl文件是第一页)

875458.pdf 
875460.pdf
954784.pdf

我下载了PDFtk,但我并不确切知道脚本是如何工作的,即使我看到一些样本,我也不知道...

如果有人能够向我展示以下内容,我将非常感激。

1)我应该安装哪些程序 2)如何命名batchbash文件,以及保存文件的位置 3)如何触发脚本运行

谢谢。

2 个答案:

答案 0 :(得分:0)

我找到了使用PDFtk on this page合并/加入两个pdf文件的命令。

'as an array formula with CSE in H2
=--LEFT(INDEX(A$2:INDEX(A:A, MATCH(1E+99, A:A)), MATCH(0, COUNTIF(H$1:H1, LEFT(A$2:INDEX(A:A, MATCH(1E+99, A:A)), 6)&""), 0)), 6)
'as a standard formula in I2
=MAX(INDEX((B$2:INDEX(F:F, MATCH(1E+99, F:F)))-(--LEFT(A$2:INDEX(A:A, MATCH(1E+99, F:F)), 6)<>H2)*1E+99, , ))
'as a standard formula in J2
=INDEX(A$1:F$1, AGGREGATE(15, 6, COLUMN(A:F)/((--LEFT(A$2:INDEX(A:A, MATCH(1E+99, F:F)), 6)=H2)*COUNTIF(I2, A$2:INDEX(F:F, MATCH(1E+99, F:F)))), 1))

这将得到每个* -index.pdf并将其与各自的* .pdf合并。

答案 1 :(得分:0)

我找到了一个例子如下。当我执行此操作时,我,至少得到以下消息。所以我想我只需要调整下面的脚本以获取正确的文件名。

  1. 执行此批处理文件时出现错误消息
  2. 找不到档案 完成。输入错误,因此没有创建输出

    1. 保存文件的位置和文件名
    2. C:\合并 merge.bat(这个文件包含下面的代码示例) 845499.pdf 845499-index.pdf 845502.pdf 845502-index.pdf

      1. pdftk设置
      2. 我安装了pdftk pro,它显示当我在命令行中执行“PATH”时,我还在c:\​​ merge和c:\ windows \ system32

        中复制了pdftk.exe
        1. 代码示例

          @echo off setlocal EnableDelayedExpansion

          rem初始化(删除)“lastFile”和“fileList”变量 设置“lastFile =” 设置“fileList =”

          rem下一行获取“dir / B”命令的输出,该命令仅显示文件名 rem“for / F”命令执行dir,获取输出并将每行分成两个“标记”(“%% a”和“%% b”) rem在“%% a”中的“”之前的第一部分和“%% b”中的* rest *(包括进一步的“”)

          for / F“tokens = 1 * delims = _”%% a in('dir / B _KM _ 。*')do(

          rem如果基本文件名改变了......    如果“%% a”neq“!lastFile!” (

            rem Process previous file list;
            rem this "if" is just to avoid process the empty list the first time
            if defined fileList (
               pdftk !fileList! output !lastFile!.pdf
            )
          
            rem Reinitialize the new list
            set "lastFile=%%a"
            set "fileList=%%a_%%b"
          

          )其他(

            rem Append this file to current list
            set "fileList=!fileList! %%a_%%b"
          

          rem处理最后一个列表 pdftk!fileList!输出!lastFile!.pdf