Справка новичка GhostScript - Повреждение многостраничного файла PDF во многие единственные файлы страницы PS или EPS

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

Поверните один многостраничный файл PDF (приблизительно 3 000 страниц, файл 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
задан 26.12.2010, 20:23

2 ответа

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

Во-первых, откройте подсказку Command/Dos.

Для навигации к папке, где файлы используйте команду CD, сопровождаемую полным путем в файлы в кавычках. Например, если они находятся в "C:\Users\Somebody\Documents and Settings\My Documents\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 везде, изменитесь = на #'s.

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


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

for G in {1..3002} ; 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

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

5
ответ дан 07.12.2019, 23:03

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

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

Это также излишне медленно, потому что это выполняет 3 002 команды для 3 002 страниц PDF.

Можно достигнуть того же самого без цикла с 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 часть на выходное имя создаст 4digit (страница) нумерация для вывода файлы EPS, заполняя неиспользуемые цифры начальными нулями (который не является тем, что Ваш желаемый выходной пример использовал).

5
ответ дан 07.12.2019, 23:03

Теги

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