J'essaye de convertir un PDF en SVG. Cependant, celui que j'utilise actuellement mappe un chemin pour chaque lettre dans chaque morceau de texte, ce qui signifie que si je change le texte dans son fichier source, il a l'air moche.
Je me demandais quel est le convertisseur PDF en SVG le plus propre, j'espère qu'il n'a pas de chemin pour ses zones de texte qui n'en ont tout simplement pas besoin. Comme nous le savons, PDF et SVG sont assez similaires, donc je suppose qu'il existe de bons convertisseurs.
Réponses:
Inkscape est utilisé par de nombreuses personnes sur Wikipédia pour convertir des PDF en SVG.
http://inkscape.org/
Ils ont même un guide pratique sur la façon de le faire!
http://en.wikipedia.org/wiki/Wikipedia:Graphic_Lab/Resources/PDF_conversion_to_SVG#Conversion_with_Inkscape
la source
--export-text-to-path
.Vous pouvez utiliser Inkscape uniquement sur la ligne de commande, sans ouvrir une interface graphique. Essaye ça:
Pour une liste complète de toutes les options de ligne de commande, exécutez
inkscape --help
.la source
J'utilise actuellement PDFBox qui a un bon support pour la sortie graphique. Il existe un bon support pour l'extraction des traits vectoriels et également pour la gestion des polices. Il existe de bons outils pour l'essayer (par exemple, PDFReader s'affichera en tant que Java Graphics2D).
Vous pouvez intercepter l'outil graphique avec un outil SVG comme Batik (je fais cela et cela donne une bonne capture).Il n'y a pas de moyen simple de convertir tous les PDF en SVG - cela dépend de la stratégie et des outils utilisés pour créer les PDF. Certains textes sont convertis en vecteurs et ne peuvent pas être facilement reconstruits - vous devez installer des polices vectorielles et les rechercher.
MISE À JOUR: J'ai maintenant développé ceci dans un package PDF2SVG qui n'utilise plus Batik:
qui a été testé sur une gamme de PDF. Il produit une sortie SVG composée de
<svg:text>
par caractère<svg:path>
<svg:image>
Les packages ultérieurs convertiront (espérons-le) les caractères en texte courant et les chemins en objets graphiques de niveau supérieurMISE À JOUR: Nous pouvons maintenant recréer le texte courant à partir des caractères SVG. Nous avons également converti les diagrammes en XML spécifiques au domaine (par exemple, les spectres chimiques). Voir https://bitbucket.org/petermr/svg2xml-dev . Il est toujours en Alpha, mais se déplace à une vitesse utile. Tout le monde peut participer!
METTRE À JOUR. (@Tim Kelty) Nous continuons à travailler sur PDF2SVG ainsi que sur des outils en aval qui font (limité) l'OCR Java et la création de primitives graphiques de plus haut niveau (flèches, boîtes, etc.) Voir https://bitbucket.org/petermr/ imageanalysis https://bitbucket.org/petermr/diagramanalyzer https://bitbucket.org/petermr/norma et https://bitbucket.org/petermr/ami-core . Il s'agit d'un projet financé pour capturer 100 millions de faits de la littérature scientifique (contentmine.org), dont une grande partie est PDF.
la source
Ce sujet est assez ancien, mais voici une solution pratique que j'ai trouvée:
http://www.cityinthesky.co.uk/opensource/pdf2svg/
Il propose un outil, pdf2png, qui une fois installé fait exactement le travail en ligne de commande. Je l'ai testé avec des résultats irréprochables jusqu'à présent, y compris avec des bitmaps.
EDIT: Mon erreur, cet outil convertit également les lettres en chemins, donc il ne répond pas à la question initiale. Cependant, cela fait du bon travail quand même, et peut être utile à quiconque n'a pas l'intention de modifier le code dans le fichier svg, alors je vais laisser le message.
la source
brew install pdf2svg
.Voici le processus que j'ai fini par utiliser. L'outil principal que j'ai utilisé était Inkscape qui était capable de convertir le texte correctement.
Pages séparées: Adobe Acrobat Pro avec JavaScript
À l'aide des actions Adobe Acrobat Pro (anciennement Traitement par lots), créez une action personnalisée pour séparer les pages PDF en fichiers séparés. Vous pouvez également diviser des PDF avec GhostScript
Action JavaScript Acrobat pour diviser les pages
Conversion de PDF en SVG: Inkscape avec fichier de commandes Windows CMD
L'utilisation de Windows Cmd a créé un fichier de commandes pour parcourir tous les fichiers PDF d'un dossier et les convertir en SVG
Fichier batch pour convertir le PDF en SVG dans le dossier actuel
Attributs de nettoyage: Windows Cmd et PowerShell
Je me rends compte que ce n'est pas une bonne pratique de modifier manuellement les balises ou attributs SVG ou XML en raison de variations potentielles et que je devrais utiliser un analyseur XML à la place. Cependant, j'ai eu un problème simple où la largeur du trait sur un dessin était très petite et sur un autre la famille de polices était incorrectement identifiée, j'ai donc fondamentalement modifié le script de commandes Windows Cmd précédent pour faire une simple recherche et remplacement. Les seuls changements concernaient les définitions de chaîne de recherche et la modification pour appeler une commande PowerShell. La commande PowerShell effectuera une recherche et un remplacement et enregistrera le fichier modifié avec un suffixe ajouté. J'ai trouvé d'autres références qui pourraient être mieux utilisées pour analyser ou modifier les fichiers SVG résultants si un autre nettoyage mineur est nécessaire.
Modifications pour rechercher et remplacer manuellement les données XML SVG
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%'"
J'espère que cela pourrait aider quelqu'un
Références
Actions Adobe Acrobat Pro et références JavaScript à des pages séparées
Références GhostScript à des pages séparées
Références de ligne de commande d'Inkscape pour la conversion de PDF en SVG
Références de script de fichier batch Windows Cmd
Recherche de remplacement de balises / attributs XML
la source
Si DVI to SVG est une option, vous pouvez également utiliser dvisvgm pour convertir un fichier DVI en fichier SVG. Cela fonctionne parfaitement par exemple pour les formules LaTeX (avec option
--no-fonts
):Il existe également pdf2svg qui utilise poppler et Cairo pour convertir un pdf en SVG. Quand j'ai essayé cela, le SVG était parfaitement rendu
inkscape
.la source
Script Bash pour convertir chaque page d'un PDF en son propre fichier SVG.
Pour générer en png, utiliser
--export-png
, etc ...la source
J'ai trouvé que cela
xfig
faisait un excellent travail:Il a fait un bien meilleur travail qu'inkscape. En fait, c'est probablement pdtoedit qui l'a fait.
la source
Voici l'API NodeJS REST pour deux scripts de rendu PDF. https://github.com/pumppi/pdf2images
Les scripts sont: pdf2svg et Imagemagicks convert
la source