2

У меня есть несколько папок, каждая из которых содержит несколько файлов изображений PDF, как это:

  Folder 1 
     file1.pdf
     file2.pdf
     file3.pdf
     ...
     file100.pdf
  Folder 2 
     file1.pdf
     file2.pdf
     file3.pdf
     ...
     file100.pdf
  Folder 3 
     file1.pdf
     file2.pdf
     file3.pdf
     ...
     file100.pdf
  ...
  Folder 94
     file1.pdf
     file2.pdf
     file3.pdf
     ...
     file100.pdf 

Есть ли способ создать своего рода сценарий, который выводит за один раз каждую папку в виде одного файла PDF, например:

Folder1.pdf
Folder2.pdf
Folder3.pdf
...
Folder94.pdf

1 ответ1

1

Объединить PDF-файлы в папке в один PDF-файл, соответствующий имени папки

Поскольку у вас есть решение для преобразования всех файлов JPG в файлы PDF, вам необходимо решение, которое объединит все файлы PDF в папке в один файл PDF, объединенный в хронологическом порядке на основе имен файлов.

Вы можете использовать PDFtk Free и его CLI PDFtk с параметром cat в пакетном скрипте, чтобы автоматизировать операции по преобразованию всех файлов PDF в папке в один PDF с именем папки в качестве имени файла.

PDFtk Free - это наш удобный графический инструмент для быстрого слияния и разделения PDF-документов и страниц. Это бесплатно использовать столько, сколько вам нравится. "

«Опытные пользователи: PDFtk Free поставляется с нашим инструментом командной строки, PDFtk Server. Таким образом, вы получаете графический интерфейс и интерфейс командной строки для PDFtk!"


Пакетный скрипт

Примечание. Значение SourceParentDir= будет полным путем к папке, в которой находятся подпапки с файлами PDF, которые необходимо объединить.

@ECHO OFF

SET "SourceParentDir=C:\Root\Parent\Folder"
FOR /R "%SourceParentDir%" %%A IN (.) DO (
    IF /I NOT [%%~A]==[%SourceParentDir%\.] pdftk "%SourceParentDir%\%%~NA\*.pdf" cat output "%SourceParentDir%\%%~NA.pdf"
    )
PAUSE
EXIT

Пакетный скрипт (обратный порядок)

@ECHO OFF

SET "SourceParentDir=C:\Root\Parent\Folder"
FOR /R "%SourceParentDir%" %%A IN (.) DO (
    IF /I NOT [%%~A]==[%SourceParentDir%\.] pdftk "%SourceParentDir%\%%~NA\*.pdf" cat output "%SourceParentDir%\temp.pdf"
    IF EXIST "%SourceParentDir%\temp.pdf" pdftk "%SourceParentDir%\temp.pdf" cat end-1 output "%SourceParentDir%\%%~NA.pdf"
    IF EXIST "%SourceParentDir%\%%~NA.pdf" IF EXIST "%SourceParentDir%\temp.pdf" DEL /Q /F "%SourceParentDir%\temp.pdf"
    )
PAUSE
EXIT

Дополнительные ресурсы

  • FOR /R

    FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
    
        Walks the directory tree rooted at [drive:]path, executing the FOR
        statement in each directory of the tree.  If no directory
        specification is specified after /R then the current directory is
        assumed.  If set is just a single period (.) character then it
        will just enumerate the directory tree.
    
  • ЕСЛИ

  • Пакетные замены (ЗА /?)

    Кроме того, была улучшена замена ссылок на переменные FOR. Теперь вы можете использовать следующий необязательный синтаксис:

    %~nI        - expands %I to a file name only
    
  • pdftk.exe --Help

          cat [<page ranges>]
                 Assembles (catenates) pages from input PDFs to create a new
                 PDF. Use cat to merge PDF pages or to split PDF pages from
                 documents. You can also use it to rotate PDF pages. Page
                 order in the new PDF is specified by the order of the given
                 page ranges. Page ranges are described like this:
    
                 <input PDF handle>[<begin page number>[-<end page num-
                 ber>[<qualifier>]]][<page rotation>]
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .