Questa risposta supera tutti i test, ma il diagramma di flusso è uno nel documento di test.
sudo apt-get install unoconv
doc2pdf respondus-docx-sample-file.docx
Perché questo è meglio di altri metodi suggeriti finora?
Ho testato gli altri metodi suggeriti finora (soprattutto oowriter
e ebook-convert
), ma superano meno test di questo metodo. Il ebook-convert
metodo rimuove i margini e una parte dei testi dal documento.
Questo metodo produce anche risultati migliori di un convertitore professionale come rainbowpdf .
Ho anche provato a convertirlo in HTML, ma il disegno con il quadrato nel cerchio e il diagramma di flusso non sono corretti.
Perché il test del diagramma di flusso fallisce?
Sembra che libreoffice e unoconv abbiano dei problemi con il rendering corretto del diagramma di flusso che si trova nel file .docx. Ciò è probabilmente dovuto al fatto che è stato realizzato utilizzando l'arte intelligente in Microsoft Office. Quello è il problema. Questo è un bug anche discusso su questo thread . Le informazioni testuali e visive sono presenti nel pdf risultante dal metodo sopra come puoi vedere (ho dovuto selezionare il testo, però).
Il colore del carattere, ad esempio, non viene letto correttamente e alcune righe sono troppo lunghe. Non sono a conoscenza di alcuna soluzione linux in grado di visualizzare correttamente l'arte intelligente. :(
Questo è anche il motivo per cui tutte le print
soluzioni pubblicate in questa pagina non ti soddisfano.
In breve
In breve, quello che stai facendo è davvero difficile e al momento non ci sono soluzioni che ti possano soddisfare pienamente. Il tallone d'Achille delle conversioni di docx2pdf è l'arte intelligente. Se riesci a vivere senza questo o se riesci a trovare un modo per individuare l'arte intelligente e convertirla in qualche modo in un'immagine, puoi raggiungere il tuo obiettivo.
Opzione 1. Forzare gli utenti a gestire il problema
Questa è una soluzione molto elegante. I tuoi creatori di contenuti potrebbero salvare la loro arte intelligente come jpg come descritto nelle pagine della guida di Office e quindi la conversione sarebbe possibile sul tuo server.
Opzione 2. Risolvi il problema
Se i diagrammi di flusso sono spesso molto simili e in base alla tua capacità di sviluppatore, puoi provare a convertire l'arte intelligente separatamente. Potresti, estrarre il file drawing1.xml dal cluster di documenti .docx e quindi utilizzare l'elaborazione del linguaggio naturale e alcuni hack pazzi per ricostruire un'arte intelligente. Ad esempio, dovresti pasticciare con questo tipo di 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>
O come soluzione minima devi almeno estrarre il testo ( <a:t>
?) Dal file e salvarlo in un modo più semplice. Oppure, se i diagrammi di flusso dei tuoi PDF sono tutti uguali, puoi scrivere uno script per modificare il colore del testo e la lunghezza della linea nel file XML stesso. Quindi potresti eseguire doc2pdf
e avresti un file che essenzialmente aveva tutte le informazioni giuste, ma forse non la formattazione. Nel caso dei diagrammi di flusso, probabilmente vorrai anche includere parte della formattazione, poiché la formattazione fa parte delle informazioni.
Opzione 3. Utilizzare un servizio di terze parti
Ho fatto qualche altra ricerca negli ultimi giorni e ho trovato un servizio che fa perfettamente la conversione: zamzar . Zamzar ti consente di caricare un file docx e di inviarti un link via e-mail. Hanno anche un servizio (a pagamento?) In cui è possibile inviare qualsiasi file a pdf@zamzar.com e quindi recuperare il file convertito nella posta in arrivo. Potresti facilmente creare un sistema attorno a questo in cui inviare automaticamente il file e analizzarlo dall'e-mail. Questo non è tanto lavoro ed il risultato finale è il migliore.
Gli appunti
- Se qualcuno ha altri servizi che fanno lo stesso, sentiti libero di modificarli.
- Ho inviato il supporto zamzar per chiedere se hanno un API. Sarebbe ancora più facile.
- Forse l' apose per .NET e Java potrebbe essere d'aiuto? O docx4java come in questo post SO molto correlato .
- Un'altra opzione è quella di esaminare il convertitore odf che sembra datato e dipende da openoffice piuttosto che da libreoffice.
- Posso ora confermare che anche il jodconverter java soffre non riesce la conversione del diagramma di flusso.
Mi sono davvero preso il tempo di testare i diversi metodi proposti in questa pagina. Si prega di sostenere eventuali commenti con test effettivi.