Я пытаюсь преобразовать PDF в SVG. Однако тот, который я использую в настоящее время, отображает путь для каждой буквы в каждом фрагменте текста, что означает, что если я изменю текст в исходном файле, он будет выглядеть некрасиво.
Мне было интересно, какой самый чистый конвертер PDF в SVG, надеюсь, тот, у которого нет пути для его текстовых областей, которые просто не нужны. Как мы знаем, PDF и SVG довольно похожи, поэтому я предполагаю, что есть несколько хороших конвертеров.
Ответы:
Inkscape используется многими людьми в Википедии для преобразования PDF в SVG.
http://inkscape.org/
У них даже есть удобное руководство, как это сделать!
http://en.wikipedia.org/wiki/Wikipedia:Graphic_Lab/Resources/PDF_conversion_to_SVG#Conversion_with_Inkscape
источник
--export-text-to-path
.Вы можете использовать Inkscape только в командной строке, не открывая графический интерфейс. Попробуй это:
Чтобы получить полный список всех параметров командной строки, запустите
inkscape --help
.источник
В настоящее время я использую PDFBox, который хорошо поддерживает графический вывод. Есть хорошая поддержка для извлечения векторных штрихов, а также для управления шрифтами. Есть несколько хороших инструментов для опробования (например, PDFReader будет отображаться как Java Graphics2D).
Вы можете перехватить графический инструмент с помощью инструмента SVG, такого как Batik (я делаю это, и он дает хороший захват).Нет простого способа преобразовать весь PDF в SVG - это зависит от стратегии и инструментов, используемых для создания PDF-файлов. Некоторый текст преобразуется в векторные и не может быть легко восстановлен - вам нужно установить векторные шрифты и искать их.
ОБНОВЛЕНИЕ: теперь я разработал это в пакет PDF2SVG, который больше не использует батик:
который был протестирован на ряде PDF-файлов. Он производит вывод SVG, состоящий из
<svg:text>
на персонажа<svg:path>
<svg:image>
Более поздние пакеты (надеюсь) преобразуют символы в бегущий текст и пути к графическим объектам более высокого уровня.ОБНОВЛЕНИЕ: теперь мы можем воссоздать текущий текст из символов SVG. Мы также преобразовали диаграммы в XML для конкретных областей (например, химические спектры). См. Https://bitbucket.org/petermr/svg2xml-dev . Он все еще в альфа-версии, но движется с полезной скоростью. Присоединиться может любой желающий!
ОБНОВИТЬ. (@Tim Kelty) Мы продолжаем работать над PDF2SVG, а также над последующими инструментами, которые выполняют (ограниченное) Java OCR и создают графические примитивы более высокого уровня (стрелки, прямоугольники и т. Д.) См. Https://bitbucket.org/petermr/ imageanalysis https://bitbucket.org/petermr/diagramanalyzer https://bitbucket.org/petermr/norma и https://bitbucket.org/petermr/ami-core . Это финансируемый проект по сбору 100 миллионов фактов из научной литературы (contentmine.org), большая часть которой - PDF.
источник
Эта тема довольно старая, но вот удобное решение, которое я нашел:
http://www.cityinthesky.co.uk/opensource/pdf2svg/
Он предлагает инструмент pdf2png, который после установки выполняет ту же работу, что и в командной строке. Пока что я тестировал его с безупречными результатами, в том числе с растровыми изображениями.
РЕДАКТИРОВАТЬ: Моя ошибка, этот инструмент также преобразует буквы в пути, поэтому он не решает исходный вопрос. Тем не менее, он в любом случае хорошо справляется со своей задачей и может быть полезен всем, кто не намерен изменять код в файле svg, поэтому я оставлю сообщение.
источник
brew install pdf2svg
.Вот процесс, который я в итоге использовал. Основным инструментом, который я использовал, был Inkscape, который мог нормально конвертировать текст.
Отдельные страницы: Adobe Acrobat Pro с JavaScript
Используя Adobe Acrobat Pro Actions (ранее называвшуюся пакетной обработкой), можно создать настраиваемое действие для разделения страниц PDF на отдельные файлы. В качестве альтернативы вы можете разделить PDF-файлы с помощью GhostScript.
Действие Acrobat JavaScript для разделения страниц
Преобразование PDF в SVG: Inkscape с пакетным файлом Windows CMD
С помощью Windows Cmd был создан командный файл, чтобы просмотреть все файлы PDF в папке и преобразовать их в SVG.
Пакетный файл для преобразования PDF в SVG в текущей папке
Атрибуты очистки: Windows Cmd и PowerShell.
Я понимаю, что вручную редактировать теги или атрибуты SVG или XML грубой силой не рекомендуется из-за возможных изменений и вместо этого следует использовать синтаксический анализатор XML. Однако у меня была простая проблема, когда ширина штриха на одном чертеже была очень маленькой, а на другом семейство шрифтов определялось неправильно, поэтому я в основном модифицировал предыдущий пакетный сценарий Windows Cmd, чтобы выполнить простой поиск и замену. Единственные изменения коснулись определений строки поиска и изменения для вызова команды PowerShell. Команда PowerShell выполнит поиск и замену и сохранит измененный файл с добавленным суффиксом. Я нашел некоторые другие ссылки, которые можно было бы лучше использовать для анализа или изменения результирующих файлов SVG, если требуется выполнить какую-то другую незначительную очистку.
Модификации для ручного поиска и замены данных SVG XML
powershell -Command "(Get-Content '%~n1.%_work_x1%') | ForEach-Object {$_ -replace 'stroke-width:0.06', 'stroke-width:1'} | ForEach-Object {$_ -replace 'font-family:Times Roman','font-family:Times New Roman'} | Set-Content '%~n1%_work_s2%.%_work_x2%'"
Надеюсь, это может кому-то помочь
Ссылки
Действия Adobe Acrobat Pro и ссылки JavaScript на отдельные страницы
Ссылки GhostScript на отдельные страницы
Ссылки на командную строку Inkscape для преобразования PDF в SVG
Ссылки на скрипт командного файла Windows Cmd
Исследование замены тегов / атрибутов XML
источник
Если DVI в SVG является вариантом, вы также можете использовать dvisvgm для преобразования файла DVI в файл SVG. Это отлично работает, например, для формул LaTeX (с опцией
--no-fonts
):Существует также pdf2svg, который использует poppler и Cairo для преобразования pdf в SVG. Когда я попробовал это, SVG был отлично отрисован
inkscape
.источник
Сценарий Bash для преобразования каждой страницы PDF в отдельный файл SVG.
Чтобы сгенерировать в png, используйте
--export-png
и т.д ...источник
Я обнаружил, что
xfig
проделал отличную работу:Он работал намного лучше, чем inkscape. На самом деле, вероятно, это сделал pdtoedit.
источник
Вот API-интерфейс REST NodeJS для двух скриптов рендеринга PDF. https://github.com/pumppi/pdf2images
Скрипты: pdf2svg и Imagemagicks convert
источник