Wyodrębnij pierwszą stronę z wielu plików pdf

17

Masz około 500 plików PDF do przejrzenia i wyodrębnienia pierwszej strony. Następnie muszą przejść przez czasochłonny proces konwersji, więc mieli nadzieję zaoszczędzić trochę czasu, wykonując proces wsadowy, aby wyodrębnić tylko pierwszą stronę z 500 plików pdf i umieścić ją w nowym pliku pdf. Miałem kłopoty z Acrobatem, ale nie mogę znaleźć prawdziwej metody na zrobienie tego dla wielu plików. Czy ktoś zna jakieś inne programy lub metody, które można by to osiągnąć? Bezpłatne i open source są oczywiście bardziej korzystne :)

EDYCJA: Odniosłem pewien sukces, używając GhostScript do wyodrębnienia tylko jednej strony. Zastanawiam się teraz, jak to zrobić wsadowo, wziąć listę plików i użyć ich.

Tim Alexander
źródło
Jakie są inne etapy procesu konwersji?
Ignacio Vazquez-Abrams
O twojej edycji zobacz moją edycję.
frabjous

Odpowiedzi:

29

Korzystanie z pdftk ...

W systemach Mac i Linux z wiersza polecenia.

for file in *.pdf ; do pdftk "$file" cat 1 output "${file%.pdf}-page1.pdf" ; done

W systemie Windows można utworzyć plik wsadowy. Otwórz Notatnik, wklej to w środku:

for %%I in (*.pdf) do "pdftk.exe" "%%I" cat 1 output "%%~nI-page1.pdf"

Może być konieczne zastąpienie „pdftk.exe” pełną ścieżką do pdftk, np. "C:\Program Files\pdftk\pdftk.exeLub cokolwiek to jest. (Nie używam systemu Windows, więc nie wiem).

Zapisz go z rozszerzeniem kończącym się na .bat, upuść w folderze z plikami PDF i kliknij dwukrotnie.

Możesz zrobić to samo z Ghostscript, tak.

Zobaczmy. W przypadku komputerów Mac i Linux (wszystkie w jednym wierszu):

for file in *.pdf ; do gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="${file%.pdf}-page1.pdf" -dFirstPage=1 -dLastPage=1 "$file" ; done

Nie jestem do końca pewien, jakie byłoby odpowiednie polecenie dla pliku wsadowego systemu Windows. Moje najlepsze przypuszczenie (- nie mam okien, więc nie mogę przetestować--):

for %%I in (*.pdf) do "C:\Program Files\gs\gs9.00\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#pdfwrite -sOutPutFile#"%%~nI-page1.pdf" -dFirstPage#1 -dLastPage#1 "%%I"

Dokładnie sprawdź, czy ścieżka do pliku wykonywalnego skryptu-widma jest poprawna i cóż, nie testowałem tego, ponieważ nie używam systemu Windows.


EDYCJA: OK, właśnie zdałem sobie sprawę, że prawdopodobnie nie chcesz 500 1-stronicowych plików PDF, ale jeden plik PDF, który łączy je wszystkie. Wystarczy uruchomić powyższe, a otrzymasz 500 jednostronicowych plików PDF. Aby połączyć je za pomocą pdftk ... na Macu i Linuksie:

pdftk *-page1.pdf cat output combined.pdf

Myślę, że prawdopodobnie jest tak samo w systemie Windows, z wyjątkiem być może wymagającej pełnej ścieżki do pdftk, jak wyżej. Możesz po prostu dodać tę linię po linii powyżej w pliku wsadowym.

Z Ghostscript ... na Macu i Linuksie:

gs -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="combined.pdf" *-page1.pdf

I prawdopodobnie jest tak samo w systemie Windows, z wyjątkiem zastąpienia „gs” na początku pełną ścieżką do gswin32c.exe, jak powyżej.

Może istnieć sposób na wykonanie skryptu ghostscript w jednym kroku, ale jestem zbyt leniwy, aby to rozgryźć.

Jeśli kolejność ich łączenia jest ważna, potrzebujemy więcej informacji.

frabjous
źródło
to było polecenie, którego szukałem. spędziłem popołudnie czytając o pętlach if w Linuksie! Twoje początkowe polecenie jest prawidłowe, tzn. Potrzebuję 500 pojedynczych stron pdf. Udało się pobrać wszystkie pierwsze strony do jednego pliku PDF, ale konwersja do programu Excel uniemożliwia zarządzanie. Moi użytkownicy mają określone wymagania dotyczące wyglądu i układu, co jest denerwujące, ale trudne. dzięki za pomoc !!
Tim Alexander,
2

Po prostu musiałem to dziś zrobić w Linuksie. Powinien również działać na komputerach Mac. Wykonaj następujące polecenie z terminala.

lpr -o page-ranges="1-1" path/to/folder/*.pdf

lpr przesyła zadania do drukarki.

Zwróć uwagę na użycie * znaku w poleceniu. Uruchomiłoby to polecenie dla wszystkich plików PDF w katalogu.

vivek_ganesan
źródło
Jak zauważyłeś, spowoduje to przesłanie zadań do drukarki. O to nie prosi OP.
Nick K9,
1

Myślę, że możesz użyć wirtualnej drukarki pdf, takiej jak pdf-forge.

Po prostu „drukujesz” pierwszą stronę, teraz na komputerze Mac i nie mogę jej wypróbować, ale jestem pewien, że możesz to zrobić więcej niż jeden na raz.

Powodzenia!!

Trufa

Trufa
źródło
dzięki za wskazówki na ich temat. te doprowadziły mnie do GhostScript, który wygląda na to, że może robić to, co chcę. Dzięki
Tim Alexander,
@ Tim Alexander, nie ma problemu !!
Trufa,
0

jak dla polecenia pliku wsadowego systemu Windows (.bat) (%% dotyczy zmiennych w pliku nietoperza)

ekstrakcja pierwszej strony pdf jako jpg o zmniejszonej rozdzielczości / rozmiarze

for %%I in (*.pdf) do "C:\Program Files (x86)\gs\gs9.14\bin\gswin32c.exe" -dSAFER -dNOPAUSE -dBATCH -sDEVICE#jpeg -r20 -sOutputFile#"%%~nI.jpg" -dFirstPage#1 -dLastPage#1 "%%I"

(w powyższym poście sOutputFile został napisany niepoprawnie .. i przy bieżącej ścieżce standardowej instalacji gs x86)

(spójrz także za pomocą Ghostscript do konwersji wielostronicowego pliku PDF na pojedynczy plik JPG? )

ebricca
źródło
0

W systemie Linux

Napisałem ten wiersz poleceń

tree -fai . | grep -P ".pdf$" | xargs -L1 -I {} pdftk {} cat 1 output {}.firstpage.pdf

Ale to działa, przetestowałem to, działa również z tyloma poziomami folderów, jakie masz. Po prostu upewnij się, że uruchamiasz go jako katalog główny struktury folderów. Każdy folder będzie miał dla każdego pliku pdf dodatkowy pdf kończący się.firstpage.pdf

Potrzebujesz pdftki treedo tego, a na Ubuntu Linux możesz zainstalować go z apt:

sudo apt install pdftk tree
Eduard Florinescu
źródło