Mac OS X: come unire i file pdf in una directory in base al loro nome


30

Voglio unire diverse centinaia di file pdf in una directory automaticamente in base ai loro nomi di file.

Per esempio

I file 1000.1.pdf 1000.2.pdf 1000.3.pdf 1000.x.pdf devono essere uniti in 1000.pdf

e

2000.abc.pdf 2000.def.pdf 2000.ghi.pdf 2000.jkl.pdf 2000.5.pdf in 2000.pdf .

Non voglio usare soluzioni basate su Anteprima / Automator (se disponibile) perché rispetto a software di terze parti come Adobe Acrobat o PDFpen che uniscono spesso file PDF (a seconda dei documenti di origine) comporta un aumento significativo delle dimensioni del file (vedere ad es. Che cosa fa aumentare le dimensioni del file PDF quando si salva in Anteprima? )

Avete consigli? Grazie!


La combinazione di PDF aumenterà sempre le dimensioni del file, qual è esattamente il tuo problema?
Nohillside

1
@patrix Sto parlando di centinaia di file da unire. Come indicato sopra, può esserci un aumento significativo delle dimensioni del file con diversi strumenti inclusi in Mac OS X. Perché dovrei desiderare un file di testo unito con un aumento delle dimensioni a volte diverse centinaia di percento ?
lejonet,

2
@patrix, lejone8 ​​vuole avere un'unione automatica di file PDF ma con rapporto 1 + 1 = 2, non con 1 + 1 = 5? o più nella dimensione del file. Inoltre lejonet8 sottolinea chiaramente che l'uso dei prodotti Apple non è accettabile a causa delle loro scarse prestazioni rispetto ai prodotti di terze parti! Non so perché elimini i miei commenti, ma così sia.
Ruskes,

1
Non capisco la richiesta di automazione. È molto semplice e veloce organizzare (ordinare) i file per nome, quindi selezionare tutti nella categoria desiderata ed eseguire l'unione con un clic in uno dei programmi disponibili come risposta qui o in altri. La dimensione del file risultante dipenderà dal tipo e dal contenuto dei file PDF, quindi 1 + 1 = 2 non è possibile. Il lejonet8 sembra essere sospeso sull'argomento per cui i programmi Apple creano file pdf più grandi di altri. Buona fortuna a rispondere a questo.
Ruskes,

2
Potete per favore modificare la domanda per descrivere più in dettaglio cosa significa "automatizzato" per voi (sembra significare cose diverse per le persone che hanno avuto il tempo di proporre soluzioni al vostro problema)? Cosa dovrebbe innescare la fusione dei documenti? Quali schemi dovrebbero essere usati per trovare i file corrispondenti? Soprattutto la risposta di DW sembra essere altamente automatizzata a prima vista, ma forse c'è più dietro la tua domanda di quanto sappiamo al momento.
Nohillside

Risposte:


25

Prova pdftk . È un software da riga di comando che può unire file PDF (e fare anche molte altre cose, ma non è rilevante qui). Puoi scaricarlo dalla pagina web ufficiale di pdftk .

Sintassi di esempio:

pdftk old1.pdf old2.pdf old3.pdf cat output new.pdf

creerà il file new.pdfche contiene la concatenazione dei file old1.pdf, old2.pdf, old3.pdf.

Per risolvere il tuo problema, con i nomi dei file di esempio:

pdftk 1000.*.pdf cat 1000.pdf
pdftk 2000.*.pdf cat 2000.pdf

e così via. Se lo desideri, puoi utilizzare lo script di shell per renderlo completamente automatico (ma dovrai dedicare un po 'di tempo al tuo apprendimento personale su come scrivere script di shell).


Supponendo che tutti i file siano denominati 1000.x, 2000.x ecc. Uno script di shell potrebbe apparire in qualche modo simile a questo

#!/bin/bash

for n in {1..9}; do
    if [[ -r ${n}000.1.pdf ]]; then
        rm -f ${n}000.pdf
        pdftk ${n}000.*.pdf cat ${n}000.pdf && mv ${n}000.*.pdf ~/.Trash/
    fi
done

Grazie per il tuo commento, ma non vedo dove sia un flusso di lavoro per le mie esigenze (centinaia di file con nomi simili, uniti secondo questi nomi).
lejonet

1
@ lejonet8, ecco esattamente dove brillano gli strumenti da riga di comando! Ho modificato la mia risposta per darti un esempio di come farlo. Elaborare ulteriori dettagli è probabilmente al di là dell'ambito di questa domanda e si riferisce maggiormente a come scrivere script di shell.
DW,

La ringrazio per la risposta. Sfortunatamente, eseguendolo sui miei file ha provocato questo messaggio di errore: Errore: testo imprevisto alla fine dell'intervallo di pagine, qui: 1000.pdf
lejonet

1
@ lejonet8 Forse potresti approfondire un po 'di più le tue esigenze di automazione nella domanda . Stai cercando cose come "Azioni cartella" o simili? Cosa innescerebbe in primo luogo il processo di concatenazione?
Nohillside

3
@ lejonet8, potresti dover sperimentare un po 'per vedere come far funzionare pdftk per te. Un messaggio di errore, senza contesto, purtroppo non è sufficiente per me diagnosticare il problema. Prova a concatenare alcune coppie di file. Sperimentare. Vedi se riesci a diagnosticare quando pdftk funziona / non funziona e la causa. Leggi il tutorial. Quindi, inviare una domanda su come far funzionare pdftk su un sito Stack Exchange adatto o su un altro sito di domande e risposte. FWIW, pdftk è stato molto affidabile per me, lavorando con un'ampia varietà di file pdf generati da molti programmi diversi. Naturalmente la tua esperienza può variare.
DW,

52

C'è uno script Python nascosto in Automator.app che unisce i file .PDF

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --help
Usage: join [--output <file>] [--shuffle] [--verbose]

Esempio di utilizzo:

/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf

2
La ringrazio per la risposta. Non posso commentare il background tecnico (potrebbe esserci una differenza nella fusione tra Automator e Preview). A seconda dei file di origine può esserci anche un aumento significativo delle dimensioni del file. L'ho appena provato di nuovo e quattro file con una dimensione di 12 mb in totale sono stati uniti a un documento da 32 mb. Questo è inaccettabile.
lejonet il

Spiacente, non posso farci niente.
Akuhn

4
Ho aggiunto questo comando come alias nel mio ~/.bash_profilefile in questo alias catpdf="/System/Library/Automator/Combine\ PDF\ Pages.action/Contents/Resources/join.py --output all.pdf *.pdf"modo : così posso semplicemente cdentrare in una directory contenente PDF ed eseguire catpdf.
Stewart Macdonald,

2
Upgrade per ingegnoso uso dello script Python nascosto in un'APP! Ho deciso di usare pdftk per una soluzione più robusta.
Blairg23,

1
@lejonet Il background tecnico è che entrambi usano gli stessi framework (Quartz.CoreGraphics il 10.11), come hai indovinato. Questo può essere visto dalle prime righe dello script `join.py '(istruzioni di importazione).
hans_meine,

8

È possibile utilizzare pdfunitedistribuito con poppler. È possibile installare popplercon Homebrew:

brew install poppler

E ora usalo:

pdfunite input1.pdf input2.pdf input3.pdf output.pdf

popplerviene fornito anche con questi comandi: pdfdetach, pdffonts, pdfimages, pdfinfo, pdfseparate, pdftocairo, pdftohtml, pdftoppm, pdftops, pdftotext, oltre a pdfunite.


0

pdftk non funziona più su El Capitan! (OS X 10.10)

Un'alternativa è il pagemaster di PDFTron. La sintassi sarebbe:

pagemaster -m *.pdf -o output.pdf

Non ha il problema di aumento della dimensione del file della soluzione Automator sopra, poiché utilizza una libreria PDF personalizzata.

Nota: questo non è uno strumento gratuito. La versione demo aggiunge una filigrana sottile su ogni pagina.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.