Как я могу разбить файл PDF на слои

1416
Benjamin Tamási

У меня есть большой файл PDF, содержащий карту. PDF-файл, вероятно, был создан с помощью AutoCAD.

Изображение состоит из цветной растровой карты и вектора с линиями в верхней части карты. (Уличные линии и т. Д.)

Мне нужно работать с растром и вектором отдельно. Когда я импортирую его в фотошоп, он видит только один слой. Когда я выбираю вкладку слоев в Adobe PDF Reader, она также показывает только один слой. Но я уверен, что есть несколько слоев, потому что когда он рендерит файл, он сначала рисует карту в фоновом режиме, и только после того, как начинает рисовать вектор сверху. Если я достаточно быстр, я могу использовать «экран печати», чтобы сохранить фоновый растр. Мне нужен более надежный метод для извлечения этого изображения, а также вектора.

Могу ли я использовать какой-нибудь инструмент с открытым исходным кодом, такой как ghostscript, для разделения pdf на его основные части, такие как текст, растр, векторные данные? И их всех их положить в папку?

1

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

0
LPChip

Вы должны работать с версией AutoCAD или оттуда экспортировать ее в виде отдельных слоев. После экспорта в PDF он становится растровым изображением, которое нельзя редактировать как отдельные слои.

У меня нет версии AutoCAD: D Если бы я сделал, или, конечно, я бы использовал это. Benjamin Tamási 8 лет назад 0
Это не становится растровым изображением, потому что, когда я открываю его с помощью Adobe Reader, если я достаточно быстр, я могу захватить первый слой, отображаемый без второго с помощью экрана печати :) Так что это не может быть растровое изображение ... растровые изображения не делают этого. Benjamin Tamási 8 лет назад 0
0
Nikhil VJ

Я нашел одно ручное решение с использованием Inkscape, сейчас ищу способы его автоматизации.

  1. Откройте PDF в Inkscape (у меня тоже была такая же карта, как у вас). Перейти с настройками импорта по умолчанию.
  2. Меню> Объект> Объекты. (а не слои)
  3. Он открывает панель объектов. Это так же, как слои. Мы можем нажать на левые столбцы, чтобы переключить видимость, заблокировать ее и т. Д.
  4. Там есть один предмет, но у него есть стрелка, указывающая, что их может быть больше. Я нажимаю на это, и оно расширяется, чтобы показать несколько подпунктов.
  5. Когда я нажимаю на каждый из них, на изображении выбираются разные объекты. При переключении видимости (закрытии глаза) каждый объект исчезает с изображения.
  6. Таким образом, после того, как я спрятал все ненужное, я перешел в меню «Файл»> «Экспорт изображения в формате PNG». Мне пришлось увеличить размер и DPI, чтобы получить хорошее разрешение .. У настройки по умолчанию есть маленький эскиз.
  7. Теперь у меня есть карта, которая мне нужна.

Я читаю документацию Inkscape, обновлю здесь, если найду способ автоматизировать этот процесс. [РЕДАКТИРОВАТЬ] Нашел способ командной строки для этого.

inkscape -z -i g2846 -j -D -d 300 test3.pdf -e 3.png 

Справочный документ: https://inkscape.org/sk/doc/inkscape-man.html

Объясняя параметры:

  • -z : нет графического интерфейса, запустите inkscape только в командной строке
  • -i g2846: Выбор определенной группы / идентификатора слоя для экспорта. Я узнал этот идентификатор / метку по вышеупомянутым ручным шагам в графическом интерфейсе Inkscape.
  • -j : скрыть все остальные слои в экспорте
  • -D: Сохранить размер экспортируемого изображения таким же, как и весь чертеж / документ, и сохранить положение извлеченного объекта. (это важно в том случае, если исходный объект повернут / деформирован, и вы хотите, чтобы на выходе не было оригинала, или если вы извлекаете несколько слоев и вам необходимо сохранить их положение на холсте)
  • -d 300 : 300 DPI: по умолчанию вывод png оказался слишком потерянным, этот параметр сохранил мне все в порядке.
  • test3.pdf : мой вклад pdf
  • -e 3.png : экспорт в формате PNG и имя файла.

К сожалению, мы можем извлечь только один объект / слой за один раз. Для inkscape подана ошибка, требующая разрешения нескольких слоев: Разрешить несколько опций -i (--export-id = ID) .

[РЕДАКТИРОВАТЬ] Другой обходной путь, если вам нужно несколько (но не все) слоев: используйте inkscapeкоманду, указанную выше, чтобы получить отдельные слои как: 1.png, 2.png, 3.png Затем выполните следующую команду из imagemagick :

$ convert -page +0+0 1.png \ -page +0+0 2.png \ -page +0+0 3.png \ -layers merge +repage merged.png 

Это должно объединить слои в merged.png.

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