Adobe Acrobat: ¿Cómo combinar por lotes para combinar múltiples archivos pdf?

10

Tengo 3 carpetas:

Folder 1 
Folder 2
Folder 3

En cada carpeta tengo 5 archivos pdf:

    Folder 1 
       file1.pdf
       file2.pdf
    Folder 2
       file1.pdf
       file2.pdf
    Folder 3
       file1.pdf
       file2.pdf

Quiero que en cada carpeta tenga un archivo combinado de esos dos archivos:

    Folder 1 
       binder.pdf
    Folder 2
       binder.pdf
    Folder 3
       binder.pdf

¿Alguna idea? No le digas que lo hagas manualmente. Este caso es solo para explicarte mi problema. Piensa que tengo cientos de carpetas. :) ¿Quizás pueda usar otra herramienta en lugar de Adobe Acrobat?

Andrei Andre
fuente
¿Qué quiere decir exactamente con "tener un archivo combinado de esos dos archivos" ? ¿ Concatenaría y fusionaría estos dos archivos en 1 PDF para usted?
Kurt Pfeifle
Adobe Acrobat o Adobe Acrobat Reader ?
wmz
@AndreiAndre Se publicaron muchas buenas soluciones a su pregunta. Tal vez podría elegir el que se adapte a todas sus necesidades y marcarlo como aceptado.
nixda

Respuestas:

12

Puede hacer esto con un archivo por lotes corto y pdftk.exe (no pdftk Builder, que es la versión de la GUI).
No hay necesidad de instalar nada.

Preparación

  • descargue y extraiga pdftk con UniExtract
  • Abra .. \ pdftk \ bin * y copie pdftk.exe y libiconv2.dll a la carpeta que elija
  • crea un nuevo archivo de texto y pega el siguiente código

    @echo off
    setlocal enabledelayedexpansion
    FOR %% A IN (% *) DO (set command =! Command! %% A)
    pdftk.exe% command% cat output "% ~ dp1binder.pdf"
    
  • Guárdelo como [email protected] en la misma carpeta que pdftk.exe y libiconv2.dll ingrese la descripción de la imagen aquí
  • cree un acceso directo de este .cmd y colóquelo en su carpeta sendto ( Win+ R»shell: sendto)

Uso

  • Vaya a una carpeta con algunos archivos PDF y seleccione tantos PDF como desee
  • Haz clic derecho en ellos y elige el acceso directo que acabas de crear
  • Se creará un nuevo PDF de carpeta en la misma carpeta donde todos los PDF seleccionados se fusionan en uno

    ingrese la descripción de la imagen aquí

Actualización: versión que utiliza el nombre de la carpeta actual como nombre de archivo para el PDF generado

@echo off
setlocal enabledelayedexpansion
:: Concat all paths fromselected files and save it as command
FOR %%A IN (%*) DO (set command=!command! %%A)

:: Take path from first selected file and save it as path
set path=%~dp1
echo %path%

:: Check if a trailing slash is present. If yes, remove it
IF %path:~-1%==\ SET path=%path:~0,-1%

:: Get last folder from path
FOR %%F in ("%path%") do (set lastFolder=%%~nxF)

:: Call pdftk, pass on command. use lastFolder as filename
pdftk.exe %command% cat output "%path%\%lastFolder%.pdf"
nixda
fuente
Muy buena respuesta. Estoy luchando por modificarlo, por lo que se guarda como FOLDERNAME en lugar de binder.pdf. ¿Cómo podría hacer eso?
Chen Stats Yu
@ChenStatsYu Ver actualización
nixda
¡¡ESTUPENDO!! Lamento volver a preguntar, no estoy seguro si debo comenzar una nueva publicación. Solo una última solicitud, ya que estoy repitiendo esto para casi 40/50 carpetas, ¿podemos modificarla para enviar la "carpeta" al cmd y usar el nombre de la carpeta, en lugar de seleccionar algunos archivos PDF de la carpeta?
Chen Stats Yu
Además, espero que sea compatible con nombres de carpetas que no estén en inglés.
Chen Stats Yu
5

Si está en Linux (o Mac, o en cualquier entorno donde esté instalado), puede usar una herramienta de línea de comandos llamada ghostscript para combinarlos.

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH file1.pdf file2.pdf file3.pdf

También puede usar lo siguiente para combinar todos los archivos en la carpeta actual

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=combinedpdf.pdf -dBATCH *.pdf 

Puede descargar ghostscript aquí . También hay una versión de Windows, pero no la probé.

Cacovsky
fuente
1
Funciona también en Windows. Tuve que escribir la ruta completa al ejecutable ghostscript (en mi PC es "c: \ Program File \ gs \ gs9.07 \ bin \ gswin32c.exe") y la expansión "* .pdf" no funciona, pero ghostscript en sí mismo funciona perfectamente.
Pitarou
3

He usado la solución anterior con éxito. Sin embargo, en mi sistema (Windows 7 de 64 bits) el código tal como está agrega los PDF en orden (aparentemente) aleatorio, no alfabéticamente por nombre de archivo.

Para que agregue archivos en orden alfabético, deberá agregar el parámetro sort-object al comando DIR (también conocido como Get-ChildItem) (el objeto sort no toma ningún parámetro aquí ya que el nombre de archivo / alfabéticamente es el predeterminado):

dir $inputfolder -r -include *.pdf -exclude $outputfile | sort-object | group DirectoryName % {& $PDFtk $.group CAT OUTPUT "$($.Name)\$outputfile" verbose}

Aquellos que tienen nombres de archivo de la forma 1.pdf 2.pdf ... 10.pdf etc. en lugar de 01.pdf 02.pdf .. 10.pdf también pueden probar una variación de esto:

pdftk *?.pdf *??.pdf *???.pdf *????.pdf cat output out.pdf
Giles Hudson
fuente
"solución anterior" - presumiblemente te refieres a la solución de nixda. Si su respuesta fuera votada más alta que la de nixda, sería inferior
fideos
1

Hay una nueva herramienta de manipulación avanzada de PDF en línea llamada Sej-da que todavía está en Beta, que tiene una miríada de funciones de PDF (incluida la capacidad de combinar múltiples archivos PDF). Es gratis y bien podría ayudar a sus necesidades.

http://sejda.com/

La Revisión 3 realizó una breve revisión de sus funciones hace solo un par de semanas:

http://revision3.com/tzdaily/sejda-online-pdf

Simón
fuente
el OP es claramente capaz de fusionar archivos pdf, quiere fusionar por lotes con un proceso automatizado. Su respuesta no brinda detalles sobre cómo usar sejda de esta manera, ni es evidente en su sitio web
fideos
1

Quizás sea mejor usar un escenario por lotes. Cree y recopile todos sus archivos pdf como xxxx.abcdef.pdf.

La primera parte es la llamada etiqueta de lote; La segunda parte es el identificador de archivo (nombre de archivo). Las etiquetas para cada parte posterior son similares en longitud y valor; El nombre de los archivos viene después del punto.

Por ejemplo, su primer lote consta de 1111.3425.pdf, 1111.76501.pdf, etc. Su segundo lote es 22222.1432.pdf, 22222.4398, etc. Y así sucesivamente para otros lotes.

Luego, puede usar un software de fusión automatizado que puede manejar miles de archivos creando una fusión separada para cada lote. Encontré este software libre de Disprosium que no necesita una línea de comando o un script por lotes. Puede descargarlo como un archivo JAR portátil. Tiene diferentes escenarios automatizados; uno descrito en esta respuesta como etiquetado y otro como la carpeta requerida separada.

Dependiendo de su hardware, puede combinar por lotes miles de archivos en lotes predefinidos.

Cualquiera
fuente
0

Prueba PDFMerge . Pero no use el formulario inicial donde tiene que seleccionar cada archivo uno por uno. En su lugar, espere a que el sitio verifique su instalación de Java, luego haga clic en el enlace "Pruebe el Applet de Java PDFMerge". Una vez que se cargue el applet y se le permita ejecutarse, haga clic en el botón Elegir archivos y podrá seleccionar varios archivos (para fusionarlos en un solo archivo).

La fusión será súper rápida y podrá manejar una gran cantidad de archivos ya que no se carga nada en el sitio web. Todo se hace en su computadora utilizando su instalación de Java.

PD: Disculpe si está buscando un software fuera de línea que se pueda personalizar para crear archivos PDF individuales en varias carpetas.

ADTC
fuente
0

Si está en Mac, puede crear un script de Automator para lograr esta tarea. ¡Conviértalo en una acción de carpeta y simplemente coloque los archivos PDF en él y vea que sucede! Si quieres puedo mostrarte cómo, ¿estás ejecutando mac?

Henrik Söderlund
fuente
0

En Linux

Escribí esta línea de comando bastante larga

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} dirname {} | uniq | xargs -L1 -I {} bash -c 'cd "$0" && pdftk *.pdf cat output binder.pdf' {}

Pero hace el trabajo, lo probé, también funciona con cuántos niveles de carpetas tiene. Solo asegúrese de ejecutarlo en la raíz de la estructura de carpetas.

Necesitas pdftky treepara esto y en Ubuntu Linux puedes instalarlo con apt:

sudo apt install pdftk tree
Eduard Florinescu
fuente