Cette réponse réussit tous les tests, mais l'organigramme en est un dans votre document de test.
sudo apt-get install unoconv
doc2pdf respondus-docx-sample-file.docx
Pourquoi est-ce mieux que d'autres méthodes suggérées jusqu'à présent?
J'ai testé les autres méthodes suggérées jusqu'à présent (en particulier oowriter
et ebook-convert
), mais elles passent moins de tests que cette méthode. La ebook-convert
méthode supprime les marges et une partie des textes du document.
Cette méthode donne même de meilleurs résultats qu'un convertisseur professionnel tel que rainbowpdf .
J'ai également essayé de le convertir en HTML, mais le dessin avec le carré dans le cercle et l'organigramme est incorrect.
Pourquoi le test de l'organigramme échoue-t-il?
Il semble que libreoffice et unoconv rencontrent des problèmes pour restituer correctement l'organigramme contenu dans le fichier .docx. Ceci est probablement dû au fait qu'il a été créé à l'aide d' art intelligent dans Microsoft Office. C'est le problème. C'est un bug é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 constater (je devais toutefois sélectionner le texte).
La couleur de la police, par exemple, n'est pas correctement lue et certaines lignes sont trop longues. Je ne connais aucune solution Linux capable d'afficher correctement l'art intelligent. :(
C'est également la raison pour laquelle toutes les print
solutions affichées sur cette page ne vous satisferont pas.
En bref
En bref, ce que vous faites est vraiment difficile et il n’existe actuellement aucune solution qui puisse vous satisfaire pleinement. Le talon d’achille des conversions de docx2pdf est l’art intelligent. Si vous pouvez vivre sans cela ou si vous pouvez trouver un moyen de repérer l' art intelligent et de le convertir en quelque sorte en une image, vous pouvez atteindre votre objectif.
Option 1. Forcer vos utilisateurs à résoudre le problème
C'est une solution très peu élégante. Vos créateurs de contenu pourraient enregistrer leur art intelligent au format jpg comme décrit dans les pages d'aide de Office. La conversion serait donc possible sur votre serveur.
Option 2. Débarrassez-vous du problème
Si les organigrammes sont souvent très similaires et en fonction de votre niveau de développeur, vous pouvez essayer de convertir l’art intelligent séparément. Vous pouvez extraire le fichier drawing1.xml de la grappe de documents .docx, puis utiliser le traitement du langage naturel et quelques astuces loufoques pour reconstruire un art intelligent. Par exemple, vous devriez jouer 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, en tant que solution minimale, extrayez au moins le texte ( <a:t>
?) Du fichier et enregistrez-le plus facilement. Ou si les diagrammes de vos fichiers PDF sont tous identiques, vous pouvez écrire un script pour changer la couleur du texte et la longueur de la ligne dans le fichier XML. Ensuite, vous pourriez exécuter doc2pdf
et vous auriez un fichier qui contient essentiellement toutes les bonnes informations, mais peut-être pas le formatage. Dans le cas des organigrammes, vous voudrez probablement aussi inclure une partie de la mise en forme, car la mise en forme fait partie des informations.
Option 3. Utiliser un service tiers
J'ai fait quelques recherches supplémentaires ces derniers jours et j'ai trouvé un service qui effectue la conversion à la perfection: zamzar . Zamzar vous permet de télécharger un fichier docx puis de vous envoyer un lien par courrier électronique. Ils ont également un service (payant?) Où vous pouvez envoyer n’importe quel fichier à pdf@zamzar.com puis récupérer le fichier converti dans votre boîte de réception. Vous pouvez facilement construire un système autour de cela dans lequel vous envoyez automatiquement le fichier et le analysez à partir du courrier électronique. Ce n’est pas tant de travail et le résultat final est le meilleur.
Remarques
- Si quelqu'un a d'autres services qui font la même chose, n'hésitez pas à les éditer.
- J'ai envoyé un courrier au support du zamzar pour lui demander s'il possède une api. Ce serait encore plus facile.
- Peut-être que apose pour .NET et Java pourraient aussi aider? Ou docx4java comme dans cet article SO très lié .
- Une autre option consiste à examiner le convertisseur odf qui semble daté et dépend de openoffice plutôt que de libreoffice.
- Je peux maintenant confirmer que le convertisseur de jod java souffre également de l'échec de la conversion de l'organigramme.
J'ai effectivement pris le temps de tester les différentes méthodes proposées sur cette page. S'il vous plaît sauvegarder tous les commentaires avec des tests réels.