53 votes

Convertir docx en PDF

J'essaie de convertir docx au format pdf sur mon serveur Ubuntu à l'aide de la fonction ligne de commande mais aucun des convertisseurs que j'ai essayés jusqu'à présent ne semble convertir correctement les fichiers Word 2007/2010/2013.

Apparemment, les convertisseurs en ligne peuvent le faire sans problème, mais les services Web ne sont pas une option car les fichiers contiennent des données sensibles. Pour les tests, j'utilise ce fichier Word 2007 car il contient des éléments importants (formules, graphiques vectoriels, images, listes, etc.) J'ai testé les outils suivants (en partie à partir de ce poste ) :

lowriter (LibreOffice Writer) - sortie incorrecte (le cercle est censé se trouver sur la dernière page, et non sur la première)

enter image description here

unoconv - la même chose que LibreOffice puisqu'il n'utilise pas son propre convertisseur. La conversion en odt d'abord, puis en pdf, fait perdre tout son sens au fichier.

abiword --to=pdf filename.doc - incorrecte et incomplète (de nombreux éléments manquent) :

enter image description here

OpenOffice Writer - même résultat que pour abiword

wvPDF - se plantent avec le message d'erreur suivant :

~$ wvPDF 2007_Office_DocEncryption.docx test.pdf

Répertoire actuel : /home/webmt/dev/test/

Un problème de fonctionnement du latex.

Vérifier les erreurs dans test.log

Poursuivre...

La conversion en dvi a échoué

Existe-t-il un moyen de convertir correctement des fichiers docx en PDF sous Linux ? Cela m'aiderait également si je savais que cela fonctionne pour quelqu'un avec l'un des programmes que j'ai déjà mentionnés. Je commencerai un bounty dès que SE me le permettra.

p.s. J'utilise Ubuntu server 12.04


Conclusion :

J'ai dû conclure qu'en ce qui me concerne, il n'existe pas d'outil fiable qui fonctionne avec les nouveaux formats MS Word et tous ses éléments sur Ubuntu et qui crée une copie univoque des fichiers docx. Aucun des outils que j'ai testés n'a pu convertir correctement le fichier d'exemple. Étant donné que je serai confronté à des versions/contenus de documents très différents et que la qualité du résultat est l'une des plus grandes priorités, je finirai par effectuer les conversions au moyen de macros VB dans Word sur un serveur Windows connecté à mon Linux.

Je définirai le message obtenant les meilleurs résultats comme la réponse acceptée. Cependant, la prime était destinée à une solution avec une conversion absolument correcte. Merci à tous, encore une fois.

70voto

don.joey Points 26933

Cette réponse est acceptée tous les tests, mais celui de l'organigramme dans votre document de test.

sudo apt-get install unoconv
doc2pdf respondus-docx-sample-file.docx

Pourquoi cette méthode est-elle meilleure que les autres méthodes proposées jusqu'à présent ?

J'ai testé les autres méthodes proposées jusqu'à présent (notamment oowriter y ebook-convert ), mais ils passent moins de tests que cette méthode. Les ebook-convert supprime les marges et une partie des textes du document.

Cette méthode donne même de meilleurs résultats qu'un convertisseur professionnel. rainbowpdf .

J'ai également essayé de le convertir en html, mais le dessin avec le carré dans le cercle et l'organigramme sont incorrects.

Pourquoi le test de l'organigramme échoue-t-il ?

Il semble que libreoffice et unoconv aient des problèmes pour rendre correctement l'organigramme qui se trouve dans le fichier .docx. Ceci est probablement dû au fait qu'il a été créé en utilisant art intelligent dans Microsoft Office. C'est là le problème. C'est le problème. un insecte également discuté sur ce fil . Les informations textuelles et visuelles sont présentes dans le pdf résultant de la méthode ci-dessus, comme vous pouvez le voir (j'ai dû sélectionner le texte, cependant).

The flowchart that does not display completely as expected.

La couleur de la police, par exemple, n'est pas bien lue et certaines lignes sont trop longues. Je ne connais pas de solution linux capable d'afficher correctement le smart art :(

C'est également la raison pour laquelle tous les print Les solutions affichées sur cette page ne vous satisferont pas.

En bref

En bref, ce que vous faites est vraiment difficile et il n'y a actuellement aucune solution qui vous satisfera pleinement. Le talon d'Achille des conversions docx2pdf est l'art intelligent. Si vous pouvez vous en passer ou si vous pouvez trouver un moyen de repérer les erreurs de conversion, vous pouvez vous en passer. art intelligent et de la convertir d'une manière ou d'une autre en une image, vous pouvez atteindre votre objectif.

Option 1. Obliger les utilisateurs à résoudre le problème

Il s'agit d'une solution très peu élégante. Vos créateurs de contenu pourraient sauvegarder leur art intelligent sous forme de jpg, comme décrit dans la rubrique pages d'aide du bureau et donc la conversion serait possible sur votre serveur.

Option 2. Contourner le problème

Si les organigrammes sont souvent très similaires et en fonction de votre niveau de développement, vous pourriez essayer de convertir l'art intelligent séparément. Vous pourriez extraire le fichier drawing1.xml du groupe de documents .docx, puis utiliser le traitement du langage naturel et quelques bidouillages pour reconstruire l'art intelligent. Par exemple, il faudrait travailler avec ce type de xml :

<dsp:txBody>
<a:bodyPr spcFirstLastPara="0" vert="horz" wrap="square" lIns="8255" tIns="8255" rIns="8255" bIns="8255" numCol="1" spcCol="1270" anchor="ctr" anchorCtr="0">
<a:noAutofit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:pPr lvl="0" algn="ctr" defTabSz="577850">
<a:lnSpc><a:spcPct val="90000"/>
</a:lnSpc>
<a:spcBef>
<a:spcPct val="0"/>
</a:spcBef>
<a:spcAft>
<a:spcPct val="35000"/>
</a:spcAft>
</a:pPr>
<a:r>
<a:rPr lang="en-US" sz="1300" b="1" kern="1200"/>
<a:t>All three sides are different lengths
</a:t>
</a:r>
</a:p>
</dsp:txBody>

Ou, comme solution minimale, vous pouvez au moins extraire le texte ( <a:t> ?) du fichier et l'enregistrer d'une manière plus simple. Ou si les organigrammes de vos PDF sont tous identiques, vous pourriez écrire un script pour changer la couleur du texte et la longueur des lignes dans le xml lui-même. Ensuite, vous pouvez exécuter doc2pdf et vous obtiendrez un fichier qui contiendra toutes les bonnes informations, mais peut-être pas la mise en forme. Dans le cas des organigrammes, vous voudrez probablement aussi inclure une partie de la mise en forme, parce que la mise en forme est partie de l'information.

Option 3. Utiliser un service tiers

J'ai poursuivi mes recherches ces derniers jours et j'ai trouvé un service qui effectue parfaitement la conversion : zamzar . Zamzar vous permet de télécharger un fichier docx et vous envoie un lien par courrier électronique. Ils proposent également un service (payant ?) qui vous permet d'envoyer n'importe quel fichier à pdf@zamzar.com et de recevoir le fichier converti dans votre boîte de réception. Vous pourriez facilement construire un système autour de cela où vous envoyez automatiquement le fichier et l'analysez à partir de l'e-mail. Cela ne demande pas beaucoup de travail et le résultat final est excellent.

Notes

  • Si quelqu'un a d'autres services qui font la même chose, n'hésitez pas à les ajouter.
  • J'ai envoyé un courrier au service d'assistance de Zamzar pour lui demander s'il disposait d'une interface utilisateur. Ce serait encore plus facile.
  • Peut-être aposer pour .NET et Java ? Ou docx4java comme dans ce billet de SO très lié .
  • Une autre option consiste à examiner le convertisseur odf qui semble dépassé et qui dépend d'openoffice plutôt que de libreoffice.
  • Je peux maintenant confirmer que le programme java convertisseur de jod ne parvient pas non plus à convertir l'organigramme.

J'ai pris le temps de tester les différentes méthodes proposées sur cette page. Veuillez étayer vos commentaires par des tests réels.

8voto

Rmano Points 30303

Il s'agit d'une solution en ligne de commande qui fonctionne correctement, mais qui utilise un logiciel propriétaire.

Je pense que le problème de base est que Les formats Microsoft Word sont entièrement compréhensibles uniquement pour Microsoft Word (même là, il y a des différences entre les versions --- il y a des fichiers Word du passé qui s'ouvrent mal formatés dans les versions plus récentes). Toutes les autres solutions sont des approximations et des astuces, qui fonctionneront ou non en fonction du fichier.

Pour être sûr, vous devez donc traiter vos fichiers .docx avec une installation Microsoft Word (et oui, je pense que c'est leur option et que c'est juste). Si vous ne voulez pas utiliser Word, ne l'utilisez pas --- J'utilise LaTeX pour mon travail, mais il est difficile de convaincre le reste du monde...).

Je l'utilise depuis longtemps Crossover pour faire fonctionner Microsoft Office sur mon ordinateur de bureau Linux (1), et je l'ai trouvé très utile. Peut-être que cela fonctionne aussi avec Wine --- jamais essayé.

J'effectue la conversion en utilisant cette configuration :

1) J'ai installé Crossover

2) Ma version de Microsoft Office est installée sous Crossover.

3) Dans Microsoft Word, désactivez l'impression en arrière-plan

4) J'ai cups-pdf installée et sélectionnée comme imprimante par défaut.

5) Pour effectuer la conversion, exécutez (hints aquí ) :

~/cxoffice/bin/wine --cx-app winword.exe respondus-docx-sample-file.docx /q /n /mFilePrintDefault /mFileExit

6) Votre fichier converti apparaîtra dans ~/PDF/ répertoire.

Votre document est presque parfait (il y a quelques désalignements sur la réponse #2, qui sont affichés dans mon Office Word 2007 quand il fonctionne sous Crossover --- je ne sais pas si c'est lié à ma version de Windows).

pagew 1-2

pages 3-4

Maintenant, le problème est que l'interface graphique s'affiche --- je ne sais pas comment la rendre "sans tête". Options de ligne de commande pour Word n'a pas aidé...

(1) Je n'ai aucun lien avec Codeveawers - je ne suis qu'un utilisateur satisfait.

6voto

Mitch Points 102545

Si Libreoffice est installé sur votre ordinateur, vous pouvez essayer de le convertir. Appuyez simplement sur Ctrl + Alt + T sur votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez la (les) commande(s) ci-dessous :

libreoffice --headless -convert-to pdf <file_name>.docx -outdir output/path/for/pdf

Autre est d'installer Coupes PDF .

Pour ce faire, il suffit d'appuyer sur Ctrl + Alt + T sur votre clavier pour ouvrir Terminal. Lorsqu'il s'ouvre, exécutez la (les) commande(s) ci-dessous :

sudo apt-get install cups-pdf

Créez ensuite une nouvelle imprimante, définissez-la comme imprimante de fichiers PDF et donnez-lui le nom que vous voulez, tant que vous connaissez le nom, puis exécutez :

oowriter -pt pdf your_word_file.docx

Et votre fichier PDF sera dans ~/PDF .

4voto

Hilton Perantunes Points 314

J'ai également eu ce problème dans le passé, mais je n'ai pas eu à l'utiliser ces derniers temps, donc je ne sais pas si cela m'affecte encore.

Quant à la réponse à la question :

Cette question : Comment convertir par lots des fichiers .doc ou .docx en .pdf ? donne dans les commentaires une raison pour laquelle votre conversion avec lowriter pourrait être défaillante :

Attention à l'utilisation du caractère "espace" en ligne de commande... Lorsque vous arrivez au caractère "espace", appuyez simplement sur la touche "tab" ;) le caractère espace, appuyez simplement sur "tab" ;) - Pitto 16 nov. 12 à 13:11

La réponse à cette question peut également être utile :

Comment convertir un fichier ODT en PDF ?

Vous courriez libreoffice --headless --convert-to pdf *.odt . Vous pouvez obtenir plus d'informations sur libreoffice avec la commande man libreoffice si vous avez besoin d'aide pour comprendre ou adapter la commande.

Cependant, vous ne pouvez pas avoir LibreOffice ouvert à ce moment-là, conformément à ce bogue : https://bugs.freedesktop.org/show_bug.cgi?id=37531


Cette question est également liée à Ubuntu, même si elle se trouve sur SuperUser : https://superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux

La première réponse propose deux options, l'une utilisant CUPS et créant une imprimante PDF, l'autre utilisant LaTex, bien que vous ayez dit que LaTex échouait.

Pour convertir en PDF via CUPS PDF, vous devez exécuter la commande suivante sudo apt-get install cups-pdf suivi de oowriter -pt pdf your_word_file.doc(x) . Cela pourrait vous aider à résoudre votre problème d'oowriter.

Il s'agit probablement d'un problème lié au fait que vous essayez de convertir en PDF à partir de DOC/DOCX, alors que la plupart des outils utilisent ODT, car ils sont liés à LibreOffice/OpenOffice/AbiWord. Ainsi, ils échouent soit en essayant de le convertir à partir du format DOCX de Microsoft, soit dans la conversion vers ODT.

Il y a plusieurs bogues avec la conversion de .docx vers Word Art (la version est incluse) :

Ceci provient du forum LibreOffice concernant la conversion de .doc et un peu de .docx : http://en.libreofficeforum.org/node/5096 . Il date de janvier 2013 et devrait donc s'appliquer dans une certaine mesure.

Au-delà de tout cela, je ne sais vraiment pas. J'espère que vous parviendrez à résoudre votre problème !

2voto

Seyed Mohammad Points 3279

Voici l'amère vérité : les solutions bureautiques pour Linux sont des échecs totaux ! Je suis un utilisateur GNU/Linux à plein temps depuis de nombreuses années et j'ai constamment cherché et essayé différentes solutions bureautiques, de l'ancien Open-Office, au plus récent Libre-Office, Abi-Word, etc... Elles ont toutes échoué à m'aider à faire mon travail de bureau. La situation est encore pire lorsqu'il s'agit de langues non latines (langues de droite à gauche comme le persan, l'arabe, etc.). L'utilisateur doit se battre avec ces logiciels pour faire son travail ! Et la compatibilité avec Microsoft Office n'est tout simplement pas assurée. Je pourrais parler pendant des heures et des heures de tout ce que j'ai essayé et de tout ce qui m'a déçu, mais ce n'est pas le but de cette question.

J'ai également essayé d'installer et d'exécuter Microsoft Office en utilisant Wine, et j'ai réussi d'une certaine manière, mais cela n'a pas bien fonctionné et cela a surtout planté lorsque j'ai essayé d'ouvrir mes fichiers Office.

LaTeX est bien, mais ce n'est pas une solution de bureau. LaTeX sert à la composition, et c'est plutôt un outil de pro, et il n'y a pas de feuilles de calcul, ni de présentations.

Quelle est donc la solution ?

Il ne s'agit pas d'une solution en ligne de commande. La seule solution que j'ai trouvée au cours de toutes ces années, pour me maintenir dans mon système d'exploitation GNU/Linux et réaliser mes travaux de bureau, est d'utiliser une installation minimale de Microsoft Windows dans une machine virtuelle (comme VirtualBox) et d'installer une suite Microsoft Office.

enter image description here

Ce n'est peut-être pas très joli, mais c'est la seule solution qui fonctionne parfaitement et qui m'évite de me battre avec de mauvaises solutions bureautiques en perdant un temps précieux. Au début, je pensais moi-même que ce n'était pas une bonne solution, mais après avoir échoué avec toutes les autres et avoir fait ce truc de VM pendant plus de 2 ans, je suis vraiment satisfait de cette solution. :)

\================================================================================

NOTE-1 : Je ne fais pas de publicité pour les produits Microsoft ! J'essaie simplement d'aider à résoudre le problème et à passer à autre chose.

NOTE-2 : Comme souligné ci-dessus, il ne s'agit PAS d'une solution en ligne de commande. Alors pourquoi publier la réponse ? Parce qu'il s'agit d'une option testée et qui fonctionne bien ! S'il n'existe pas de solution en ligne de commande qui fonctionne (ce que je soupçonne fortement d'être le cas), il vaut mieux avoir une option ALTERNATIVE que PAS d'option.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X