1

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

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

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

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

2 ответа2

0

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

0

Я нашел одно ручное решение с использованием 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .