GhostScript noob help - разбиение многостраничного файла PDF на множество одностраничных файлов PS или EPS

7832
godzilla_g

Я пытаюсь сделать следующее с ghostscript:

Превратите один многостраничный файл PDF (около 3000 страниц, файл 200 МБ) в:

Один файл на страницу PDF и конвертируйте каждый (страницу / файл) в EPS или PS (постскриптум (предпочтительно)).

Пример:

hello.pdf (10 pages) 

будет производить:

hello1.ps (page 1 out of 10) hello2.ps hello3.ps ... hello10.ps 

Как я могу это сделать? Я пытался в течение 4 дней, и не могу понять это.

У меня есть скрипт, который я пробовал (не будет работать):

Note: Windows(7) user here.  gs -sDEVICE=epswrite -o documentname-%.eps documentname.pdf 

Я также не знаю, как перейти к каталогу, где находится мой файл (не могу понять это тоже). Если вы можете, пожалуйста, покажите мне, как.

Большое спасибо.

3

2 ответа на вопрос

5
frabjous

Во-первых, я использую Linux, а не Windows, поэтому я не могу это проверить, но я думаю, что-то вроде этого является правильным. (Я почти испытываю желание сказать вам, чтобы установить Linux внутри виртуальной машины для этого, так как подобные вещи намного проще с взрослой операционной системой, но в любом случае, вот мой лучший выбор для использования Windows.)

Сначала откройте командную / Dos строку.

Чтобы перейти к папке, в которой находятся ваши файлы, используйте команду CD, после чего укажите полный путь к файлам в кавычках. Например, если они находятся в «C: \ Users \ Somebody \ Documents and Settings \ Мои документы \ PDFs \», введите:

cd "C:\Users\Somebody\Documents and Settings\My Documents\PDFs\"

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

Хорошо, теперь я думаю, что вам придется использовать полный путь к исполняемому файлу Ghostscript, который вы должны найти сами. Я предполагаю, что это «C: \ Program Files (x86) \ gs \ gs9.00 \ bin \ gswin32c.exe», но вам нужно будет дважды проверить это на своем компьютере. Если вы используете другую версию ghostscript или 32-разрядную версию Windows 7, она будет где-то еще. Также убедитесь, что вы используете gswin32c.exe, а не gswin32.exe, который отличается.

Теперь выясните, сколько именно страниц в этом PDF. Я бы знал, как это сделать с помощью команды в Linux, но я не имею понятия в Windows. Я собираюсь предположить, что это 3002.

Теперь введите эту команду в командной строке (все в одной строке):

FOR \L %G IN (1,1,3002) DO "C:\Program Files (x86)\gs\gs9.00\bin\gswin32c.exe" -dBATCH -dSAFER -dNOPAUSE -dFirstPage=%G -dLastPage=%G -sDEVICE=pswrite -o hello%G.ps hello.pdf

Это мое лучшее предположение. Но, надеюсь, тот, кто на самом деле использует Windows, может подтвердить, что это работает.

Для epsfiles вместо этого измените -sDEVICE#pswriteна -sDEVICE=epswriteи измените hello%G.psна hello%G.eps.

Если вместо этого вы используете пакетный файл, везде используйте %% G вместо% G, замените = на #.

Если «hello.pdf» изменяется на что-то с пробелами, используйте кавычки «hello world.pdf». То же самое для "привет% G.ps".


В GNU / Linux (или Mac OS X) соответствующей командой будет:

for G in ; do gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=$G -dLastPage=$G -sDEVICE=pswrite -o "hello$G.ps" "hello.pdf" ; done

чтобы он автоматически вычислял количество выполняемых страниц, если у вас установлены seq и установлены утилиты poppler (которые, по-моему, поставляются по умолчанию в Ubuntu), вы можете использовать:

for G in $(seq 1 $(pdfinfo academicregs.pdf | sed -n 's/Pages:[^0-9]*\([0-9]*\).*/\1/p')) ; do gs -dSAFER -dBATCH -dNOPAUSE -dFirstPage=$G -dLastPage=$G -sDEVICE=pswrite -o "hello$G.ps" "hello.pdf" ; done

Те, которые я проверял, и они работают.

Вау, спасибо. Я собираюсь установить (двойную загрузку) Ubuntu 10.04 (или 10.04, или 9.10), чтобы иметь возможность работать с такими вещами. Сейчас я запускаю только Win7, потому что работа требует этого. Ваше объяснение довольно хорошее, поэтому я попробую. Если вы можете, не могли бы вы так же хорошо объяснить это для Ubuntu? Большое спасибо. Этот материал командной строки для меня как бы бред. godzilla_g 13 лет назад 0
Я отредактирую свой ответ, чтобы включить инструкции для Linux. frabjous 13 лет назад 0
5
Kurt Pfeifle

Команда frabjous 'работает, но делает вещи более сложными, чем они должны быть для такой простой задачи, как эта.

Он запускает отдельную команду Ghostscript для каждой отдельной страницы PDF один раз, выбирая только нужные PDF страницы через -dFirstPage=... -dLastPage=...параметры. (У его версии для Windows также есть небольшая опечатка: она должна быть for /L %G in...- вместо for \L %G in...)

Это также излишне медленно, потому что он запускает 3002 команды для PDF-файла на 3002 страницы.

Вы можете добиться того же самого, не пройдя 3002 прохода за один проход команды Ghostscript. В Windows:

 gswin32c.exe ^ -o hello%04d.eps ^ -sDEVICE=epswrite ^ hello.pdf 

В Linux или Mac OS X:

 gs \ -o hello%04d.eps \ -sDEVICE=epswrite \ hello.pdf 

%04dЧасть во имя вывода будет создавать 4 - х символьный (страницы) нумерации для выходных файлов EPS, заполнение неиспользуемого цифры с ведущими нулями (что не то, что используется нужный пример вывода).

Это должен быть принятый ответ Andy 9 лет назад 0

Похожие вопросы