Витягнути першу сторінку з декількох файлів


17

У вас є близько 500 PDF-файлів, які потрібно пройти і витягнути першу сторінку. Потім їм потрібно пройти деякий час, який вимагає тривалого процесу перетворення, тому сподівався спробувати заощадити деякий час, провівши пакетний процес, щоб витягнути лише 500 сторінок із 500 pdfs та помістити її в новий pdf. У вас виникли тріски навколо Acrobat, але не можна знайти реального способу зробити це для кількох файлів. Хтось знає якісь інші програми чи методи, які цього могли б досягти? Безкоштовно та з відкритим кодом, очевидно, вигідніше :)

EDIT: Насправді мали певний успіх використання GhostScript для вилучення лише однієї сторінки. Зараз я дивлюся на те, як це зробити, і взяти список файлів і використовувати їх.


Що передбачають інші кроки в процесі перетворення?
Ігнасіо Васкес-Абрамс

Про вашу редагування див. Мою редакцію.
frabjous

Відповіді:


29

Використання pdftk ...

На mac та linux з командного рядка.

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

У Windows ви можете створити пакетний файл. Відкрийте Блокнот, вставте його всередину:

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

Можливо, вам буде потрібно замінити "pdftk.exe" на повний шлях до pdftk, наприклад, "C:\Program Files\pdftk\pdftk.exeабо будь-яким іншим. (Я не використовую Windows, тому не знаю.)

Збережіть його з розширенням, що закінчується .bat, опустіть його у папку з PDF-файлами та двічі клацніть.

Можна зробити те ж саме з Ghostscript, так.

Подивимось. Для Mac та Linux (усі в одному рядку):

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

Я не точно впевнений, якою була б відповідна команда для пакетного файлу Windows. Моя найкраща здогадка (- У мене немає вікон, тому я не можу перевірити--):

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"

Двічі перевірте, чи правильно виконаний ваш скрипт-привид правильно, і я не перевіряв цього, оскільки не використовую Windows.


EDIT: Гаразд, я щойно зрозумів, що ви, мабуть, не хочете 500 PDF-сторінок на 1 сторінки, а єдиний PDF, який поєднує їх усі. Просто запустіть вищесказане, і це дозволить вам залишити 500 PDF-сторінок на 1 сторінці. Щоб поєднати їх за допомогою pdftk ... на mac та linux:

pdftk *-page1.pdf cat output combined.pdf

Я думаю, що це, мабуть, те саме в Windows, за винятком того, що, можливо, потрібен повний шлях до pdftk, як вище. Ви можете просто додати цей рядок після рядка вище у вашому пакетному файлі.

З Ghostscript ... на mac та linux:

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

І це, мабуть, те саме в Windows, за винятком заміни "gs" на початку повним шляхом до gswin32c.exe, як вище.

Можливо, є спосіб привидів зробити обидва за один крок, але я лінивий, щоб зараз це зрозуміти.

Якщо порядок їх поєднання важливий, тоді нам знадобиться додаткова інформація.


це команда, яку я шукав. провели вдень, читаючи про те, якщо петлі в Linux! Ваша початкова команда є правильною, тобто мені потрібно 500 одних сторінок pdfs. Вдалося отримати всі перші сторінки в одному PDF-файлі, але перетворення у excel тоді робить його незмінним. Мої користувачі мають дуже специфічні запити та вимоги до макета, що викликає жахливість, але складно. дякую за допомогу !!
Тім Олександр

2

Просто довелося це зробити сьогодні в Linux. Це має працювати і для Mac. Виконайте наступну команду зі свого терміналу.

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

lpr надсилає завдання принтеру.

Зверніть увагу на використання символів * у команді. Це запустить команду для всіх ваших PDF-файлів у каталозі.


Як ви вказуєте, це надсилатиме завдання на принтер. Це не те, про що просить ОП.
Нік К9

1

Я думаю, ви можете використовувати віртуальний принтер у форматі PDF, наприклад, pdf-forge.

Ви просто "надрукуєте" першу сторінку, я зараз на Mac і не можу спробувати її, але я впевнений, що ви можете робити це більше, ніж за однією.

Удачі!!

Труфа


дякую за покажчики на них. це призвело мене до GhostScript, який, схоже, міг би робити те, що я хочу. Спасибі
Тім Олександр

@Tim Олександр, взагалі ніяких проблем !!
Труфа

0

що стосується команди командного файлу Windows (.bat) (%% - для змінних у файлі bat)

вилучення першої сторінки у форматі PDF у форматі jpg із зменшеною роздільною здатністю / розміром

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"

(у публікації вище sOutputFile було написано неправильно .. та з поточним контуром стандартного встановлення gs x86)

(також подивіться на Використання Ghostscript для перетворення багатосторінкового PDF в єдиний JPG? )


0

У Linux

Я написав цей командний рядок

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

Але це робить цю роботу, я перевірив її, вона також працює з якомога більшою кількістю папок. Просто переконайтеся, що ви запускаєте його корінь структури папки. Кожна папка матиме для кожного файлу PDF додатковий pdf, що закінчується.firstpage.pdf

Вам потрібно pdftkі treeдля цього, і для Ubuntu Linux ви можете встановити його за допомогою apt:

sudo apt install pdftk tree

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.