Próbuję przekonwertować plik PDF na SVG. Jednak ten, którego używam, obecnie mapuje ścieżkę dla każdej litery w każdym fragmencie tekstu, co oznacza, że jeśli zmienię tekst w pliku źródłowym, wygląda brzydko.
Zastanawiałem się, jaki jest najczystszy konwerter plików PDF na SVG, mam nadzieję, że nie ma ścieżki do obszarów tekstowych, które po prostu jej nie potrzebują. Jak wiemy, PDF i SVG są dość podobne, więc zakładam, że istnieje kilka dobrych konwerterów.
Odpowiedzi:
Inkscape jest używany przez wiele osób w Wikipedii do konwersji plików PDF na SVG.
http://inkscape.org/
Mają nawet przydatny przewodnik, jak to zrobić!
http://en.wikipedia.org/wiki/Wikipedia:Graphic_Lab/Resources/PDF_conversion_to_SVG#Conversion_with_Inkscape
źródło
--export-text-to-path
.Możesz używać Inkscape tylko w wierszu poleceń, bez otwierania GUI. Spróbuj tego:
Aby uzyskać pełną listę wszystkich opcji wiersza poleceń, uruchom
inkscape --help
.źródło
Obecnie używam PDFBox, który ma dobre wsparcie dla wyjścia graficznego. Istnieje dobre wsparcie dla wyodrębniania obrysów wektorowych, a także zarządzania czcionkami. Istnieje kilka dobrych narzędzi do wypróbowania tego (np. PDFReader wyświetli się jako Java Graphics2D).
Możesz przechwycić narzędzie graficzne za pomocą narzędzia SVG, takiego jak Batik (robię to i daje dobre przechwytywanie).Nie ma prostego sposobu na konwersję wszystkich plików PDF do SVG - zależy to od strategii i narzędzi użytych do tworzenia plików PDF. Część tekstu jest konwertowana na wektory i nie można jej łatwo zrekonstruować - musisz zainstalować czcionki wektorowe i sprawdzić je.
AKTUALIZACJA: Teraz opracowałem to w pakiecie PDF2SVG, który nie używa już Batika :
który został przetestowany na wielu plikach PDF. Tworzy plik wyjściowy SVG składający się z plików
<svg:text>
na znak<svg:path>
<svg:image>
Późniejsze pakiety (miejmy nadzieję) przekonwertują znaki na tekst i ścieżki do obiektów graficznych wyższego poziomuAKTUALIZACJA: Możemy teraz odtworzyć działający tekst ze znaków SVG. Przekonwertowaliśmy również diagramy do formatu XML specyficznego dla domeny (np. Widma chemiczne). Zobacz https://bitbucket.org/petermr/svg2xml-dev . Nadal jest w fazie alfa, ale porusza się z użyteczną prędkością. Każdy może się przyłączyć!
AKTUALIZACJA. (@Tim Kelty) Nadal pracujemy nad PDF2SVG, a także nad narzędziami, które wykonują (w ograniczonym zakresie) Java OCR i tworzenie prymitywów graficznych wyższego poziomu (strzałki, ramki itp.) Zobacz https://bitbucket.org/petermr/ imageanalysis https://bitbucket.org/petermr/diagramanalyzer https://bitbucket.org/petermr/norma i https://bitbucket.org/petermr/ami-core . Jest to finansowany projekt mający na celu uchwycenie 100 milionów faktów z literatury naukowej (contentmine.org), z których większość to PDF.
źródło
Ten temat jest dość stary, ale oto przydatne rozwiązanie, które znalazłem:
http://www.cityinthesky.co.uk/opensource/pdf2svg/
Oferuje narzędzie pdf2png, które po zainstalowaniu wykonuje dokładnie to samo co w wierszu poleceń. Do tej pory przetestowałem to z nienagannymi wynikami, w tym z bitmapami.
EDYCJA: Mój błąd, to narzędzie również konwertuje litery na ścieżki, więc nie odpowiada na początkowe pytanie. Jednak i tak robi dobrą robotę i może być przydatny dla każdego, kto nie zamierza modyfikować kodu w pliku svg, więc zostawię post.
źródło
brew install pdf2svg
.Oto proces, którego użyłem. Głównym narzędziem, którego użyłem, był Inkscape, który był w stanie poprawnie konwertować tekst.
Oddzielne strony: Adobe Acrobat Pro z JavaScriptem
Korzystając z Adobe Acrobat Pro Actions (dawniej Batch Processing) utwórz niestandardową akcję, aby podzielić strony PDF na osobne pliki. Alternatywnie możesz podzielić pliki PDF za pomocą GhostScript
Akcja Acrobat JavaScript do dzielenia stron
Konwersja PDF do SVG: Inkscape z plikiem wsadowym Windows CMD
Za pomocą programu Windows Cmd utworzono plik wsadowy, aby przeglądać wszystkie pliki PDF w folderze i konwertować je do formatu SVG
Plik wsadowy do konwersji pliku PDF na SVG w bieżącym folderze
Atrybuty czyszczenia: Windows Cmd i PowerShell
Zdaję sobie sprawę, że nie jest najlepszą praktyką ręczną edycję znaczników lub atrybutów SVG lub XML na siłę ze względu na potencjalne różnice i zamiast tego należy użyć parsera XML. Jednak miałem prosty problem, w którym szerokość obrysu na jednym rysunku była bardzo mała, a na innym rodzina czcionek była nieprawidłowo identyfikowana, więc zasadniczo zmodyfikowałem poprzedni skrypt wsadowy Windows Cmd, aby wykonać proste wyszukiwanie i zamianę. Jedyne zmiany dotyczyły definicji ciągu wyszukiwania i zmiany w celu wywołania polecenia programu PowerShell. Polecenie PowerShell wykona wyszukiwanie i zamienianie oraz zapisuje zmodyfikowany plik z dodanym sufiksem. Znalazłem kilka innych odniesień, które można lepiej wykorzystać do przeanalizowania lub zmodyfikowania wynikowych plików SVG, jeśli konieczne jest wykonanie innego drobnego czyszczenia.
Modyfikacje umożliwiające ręczne wyszukiwanie i zamianę danych 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%'"
Mam nadzieję, że to może komuś pomóc
Bibliografia
Akcje Adobe Acrobat Pro i odwołania JavaScript do oddzielnych stron
GhostScript odwołuje się do oddzielnych stron
Odniesienia do wiersza poleceń Inkscape dotyczące konwersji plików PDF na SVG
Odwołania do skryptów plików wsadowych Windows Cmd
Badanie zastępowania tagów / atrybutów XML
źródło
Jeśli opcją jest DVI na SVG, możesz również użyć programu dvisvgm do konwersji pliku DVI na plik SVG. Działa to doskonale na przykład dla formuł LaTeX (z opcją
--no-fonts
):Istnieje również pdf2svg, który używa popplera i Cairo do konwersji pliku PDF na SVG. Kiedy próbowałem tego, plik SVG był doskonale wyrenderowany w formacie
inkscape
.źródło
Skrypt Bash do konwersji każdej strony pliku PDF do własnego pliku SVG.
Aby wygenerować w png, użyj
--export-png
itp ...źródło
Okazało się, że
xfig
wykonał świetną robotę:Wykonał znacznie lepszą pracę niż inkscape. Właściwie to prawdopodobnie zrobił to pdtoedit.
źródło
Oto interfejs API NodeJS REST dla dwóch skryptów renderujących PDF. https://github.com/pumppi/pdf2images
Skrypty to: konwersja pdf2svg i Imagemagicks
źródło