Konvertieren Sie docx in PDF

41

Ich versuche, docx- Dateien auf meinem Ubuntu-Server über die Befehlszeile in pdf-Dateien umzuwandeln , aber keiner der bisher getesteten Konverter scheint Word 2007/2010/2013-Dateien korrekt umzuwandeln.

Anscheinend können Online-Konverter es problemlos verwalten, Webdienste sind jedoch keine Option, da die Dateien vertrauliche Daten enthalten. Für Tests verwende ich diese Word 2007-Datei, da sie einige wichtige Elemente enthält (Formeln, Vektorgrafiken, Bilder, Listen usw.). Ich habe die folgenden Tools getestet (teilweise aus diesem Beitrag ):

lowriter (LibreOffice Writer) - falsche Ausgabe (der Kreis soll sich auf der letzten Seite befinden, nicht auf der ersten)

Bildbeschreibung hier eingeben

unoconv- Wie LibreOffice, da es keinen eigenen Konverter verwendet. Das Konvertieren zuerst nach odt und dann nach pdf bringt die Datei durcheinander.

abiword --to=pdf filename.doc - falsch und unvollständig (viele Elemente fehlen):

Bildbeschreibung hier eingeben

OpenOffice Writer - gleiches Ergebnis wie bei abiword

wvPDF - Absturz mit folgender Fehlermeldung:

~ $ wvPDF 2007_Office_DocEncryption.docx test.pdf

Aktuelles Verzeichnis: / home / webmt / dev / test /

Einige Probleme beim Laufenlassen von Latex.

Suchen Sie in test.log nach Fehlern

Auch weiterhin...

Die Konvertierung in dvi ist fehlgeschlagen

Gibt es eine Möglichkeit, docx-Dateien unter Linux korrekt in PDF zu konvertieren? Es würde mir auch helfen, wenn ich wüsste, dass es für jemanden mit einem der Programme funktioniert, die ich bereits erwähnt habe. Ich werde ein Kopfgeld erheben, sobald SE es mir erlaubt.

ps Ich benutze Ubuntu Server 12.04


Fazit :

Ich musste zu dem Schluss kommen, dass es für mich derzeit kein zuverlässiges Tool gibt, das mit neuen MS Word-Formaten und all seinen Elementen unter Ubuntu zusammenarbeitet und eine Eins-zu-Eins-Kopie von docx-Dateien erstellt. Keines der von mir getesteten Tools konnte die Beispieldatei ordnungsgemäß konvertieren. Da ich mit sehr unterschiedlichen Dokumentversionen / -inhalten konfrontiert werde und die Ausgabequalität eine der höchsten Prioritäten hat, werde ich die Konvertierungen mithilfe von VB-Makros in Word auf einem Windows-Server durchführen, der mit meinem Linux verbunden ist.

Ich werde den Beitrag so einstellen, dass die besten Ergebnisse als akzeptierte Antwort erzielt werden. Das Kopfgeld war jedoch für eine Lösung mit absolut korrekter Umsetzung gedacht. Nochmals vielen Dank an alle.

Skeptisch Jule
quelle
3
Latex probiert?
Braiam
@ScepticalJule, Ja, am Ende ist ein Problem aufgetreten. Ich habe mir nur die erste Seite angesehen.
1
@Braiam Kannst du einen Link zum Konvertieren mit Latex hinterlassen?
Skeptical Jule
2
@ScepticalJule Ich denke, Braiam meinte, du solltest versuchen, dein Dokument sofort in Latex zu schreiben. Konvertierungen von docx nach latex sind weitaus schmerzhafter als Konvertierungen von docx nach pdf. Sie können versuchen, eine Konvertierung von docx nach doc und dann von doc nach pdf durchzuführen. Sie müssten jedoch ein LO-unabhängiges Tool finden, um dies zu tun. Lassen Sie mich wissen, ob ich auf andere Weise helfen kann und ob meine Antwort Ihnen geholfen hat.
don.joey

Antworten:

58

Diese Antwort besteht alle Tests, aber das Flussdiagramm in Ihrem Testdokument.

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

Warum ist das besser als andere Methoden bisher vermuten lassen?

Ich habe die anderen bisher vorgeschlagenen Methoden (insbesondere oowriterund ebook-convert) getestet , aber sie bestehen weniger Tests als diese Methode. Die ebook-convertMethode entfernt die Ränder und einen Teil der Texte aus dem Dokument.

Diese Methode liefert sogar bessere Ergebnisse als ein professioneller Konverter als rainbowpdf .

Ich habe auch versucht, es in HTML umzuwandeln, aber die Zeichnung mit dem Quadrat im Kreis und das Flussdiagramm sind falsch.

Warum schlägt der Flussdiagrammtest fehl?

Es scheint, dass libreoffice und unoconv Probleme beim korrekten Rendern des Flussdiagramms in der DOCX-Datei haben. Dies liegt wahrscheinlich daran, dass es mit Smart Art in Microsoft Office erstellt wurde. Das ist das Problem. Das ist ein Fehler, der auch in diesem Thread diskutiert wird . Wie Sie sehen können, sind die textuellen und visuellen Informationen im PDF enthalten, das sich aus der obigen Methode ergibt (ich musste den Text jedoch auswählen).

Das Flussdiagramm, das nicht vollständig wie erwartet angezeigt wird.

Beispielsweise wird die Schriftfarbe nicht richtig gelesen und einige Zeilen sind zu lang. Mir ist keine Linux-Lösung bekannt, mit der Smart Art korrekt dargestellt werden kann. :(

Dies ist auch der Grund, warum Sie nicht mit allen printauf dieser Seite veröffentlichten Lösungen zufrieden sind.

Zusamenfassend

Kurz gesagt, was Sie tun, ist wirklich schwer und es gibt derzeit keine Lösungen, die Sie voll und ganz zufrieden stellen. Die Achillesferse der docx2pdf-Konvertierungen ist die clevere Kunst. Wenn Sie ohne das leben können oder einen Weg finden, um intelligente Kunst zu entdecken und sie irgendwie in ein Bild umzuwandeln, können Sie Ihr Ziel erreichen.

Option 1. Zwingen Sie Ihre Benutzer, sich mit dem Problem zu befassen

Dies ist eine sehr unelegante Lösung. Ihre Ersteller von Inhalten könnten ihre Smart Art als JPG speichern, wie auf den Office-Hilfeseiten beschrieben, und daher wäre die Konvertierung auf Ihrem Server möglich.

Option 2. Versuchen Sie, das Problem zu umgehen

Wenn die Flussdiagramme oft sehr ähnlich sind und Sie sich als Entwickler auskennen, können Sie versuchen, die Smart Art separat zu konvertieren. Sie können die Datei drawing1.xml aus dem DOCX-Cluster von Dokumenten extrahieren und dann mit der Verarbeitung in natürlicher Sprache und einigen verrückten Hacks die Smart Art neu erstellen. Zum Beispiel müssten Sie sich mit dieser Art von XML anlegen:

<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>

Oder zumindest extrahieren Sie als Minimallösung den Text ( <a:t>?) Aus der Datei und speichern ihn auf einfachere Weise. Oder wenn die Flussdiagramme Ihrer PDFs alle gleich sind, können Sie ein Skript schreiben, um die Textfarbe und die Zeilenlänge in der XML selbst zu ändern. Dann könnten Sie ausführen doc2pdfund Sie hätten eine Datei, die im Wesentlichen alle richtigen Informationen enthält, aber möglicherweise nicht die Formatierung. Im Fall von Flussdiagrammen möchten Sie wahrscheinlich auch einen Teil der Formatierung einbeziehen, da die Formatierung Teil der Informationen ist.

Option 3. Verwenden Sie einen Drittanbieter-Service

Ich habe in den letzten Tagen einige Nachforschungen angestellt und einen Service gefunden, der die Konvertierung perfekt macht: zamzar . Mit Zamzar können Sie eine docx-Datei hochladen und Ihnen anschließend einen Link per E-Mail senden. Sie haben auch einen (kostenpflichtigen?) Dienst, bei dem Sie eine beliebige Datei an [email protected] senden und die konvertierte Datei dann wieder in Ihren Posteingang übertragen können. Sie können problemlos ein System erstellen, in dem Sie die Datei automatisch senden und aus der E-Mail analysieren. Das ist nicht so viel Arbeit und das Endergebnis ist das Beste.

Anmerkungen

  • Wenn jemand andere Dienste hat, die dasselbe tun, können Sie diese gerne bearbeiten.
  • Ich habe die Zamzar-Unterstützung per E-Mail kontaktiert, um zu fragen, ob sie eine API haben. Das wäre noch einfacher.
  • Vielleicht könnte auch apose für .NET und Java helfen? Oder docx4java wie in diesem sehr verwandten SO-Beitrag .
  • Eine andere Möglichkeit ist, in den odf-converter zu schauen, der veraltet zu sein scheint und von openoffice und nicht von libreoffice abhängt.
  • Ich kann jetzt bestätigen, dass der java jodconverter auch unter der umwandlung des flussdiagramms leidet.

Ich habe mir tatsächlich die Zeit genommen, die verschiedenen auf dieser Seite vorgeschlagenen Methoden zu testen. Bitte hinterlassen Sie alle Kommentare mit aktuellen Tests.

don.joey
quelle
1
Ich habe Neuigkeiten von zamzar erhalten: "Wir haben derzeit eine API, die wir hoffentlich in den nächsten Monaten in der Beta einführen werden - könnten wir Sie zur Beta-Testversion hinzufügen, wenn dies von Interesse ist?" Sie erwähnten auch, dass ihr Konvertierungssystem etwas ist, das sie im eigenen Haus entwickelt haben.
don.joey
@jasonplutext Ich stimme den Rezensenten zu, dass Ihre Bearbeitung nicht hilfreich war. Als Autor von Plutext (ich denke schon?) Würde ich vorschlagen, dass Sie eine eigene Antwort mit einem Haftungsausschluss hinzufügen, der Ihre Zugehörigkeit angibt. Vielen Dank.
don.joey
Irgendwelche Updates in den letzten Jahren?
Becko
@becko Ich habe es nicht weiterverfolgt. Vielleicht ein Kopfgeld für jemand anderen setzen?
don.joey
Hinweis aus der Zukunft: Die ordnungsgemäße Verwendung in neueren Versionen von lowriterist jetzt lowriter --convert-to pdf input_file.docx. Die Verwendung --pt pdfwird im Hintergrund fehlschlagen.
ACK_stoverflow
6

Dies ist eine Befehlszeilenlösung, die anständig funktioniert, aber proprietäre Software verwendet.

Ich denke, dass das Grundproblem darin besteht, dass Microsoft Word-Formate nur für Microsoft Word vollständig verständlich sind (auch dort gibt es Unterschiede zwischen den Versionen - es gibt Word-Dateien aus der Vergangenheit, die in neueren Versionen falsch formatiert geöffnet werden). Alle anderen Lösungen sind Näherungswerte und Hacks, sodass sie je nach Datei funktionieren oder nicht.

Um sicherzugehen, dass Sie Ihre .docx-Dateien mit einer Microsoft Word-Installation verarbeiten müssen (und ja, ich denke, es ist ihre Option und es ist fair. Wenn Sie Word nicht verwenden möchten, verwenden Sie es nicht - ich gehe mit LaTeX für meine Arbeit, aber es ist schwierig, den Rest der Welt davon zu überzeugen ...).

Ich verwende Crossover seit Ewigkeiten, um Microsoft Office auf meinem Linux-Desktop (1) auszuführen, und finde es ziemlich nützlich. Vielleicht funktioniert es auch mit Wein - nie ausprobiert.

Ich mache die Konvertierung mit dieser Konfiguration:

1) Ich habe Crossover installiert

2) Ich habe meine Version von Microsoft Office unter Crossover installiert

3) Deaktivieren Sie in Microsoft Word "Hintergrunddruck"

4) Ich habe einen cups-pdfDrucker installiert und als Standarddrucker ausgewählt.

5) Um die Konvertierung durchzuführen, führen Sie Folgendes aus (Hinweise hier ):

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

6) Ihre konvertierte Datei wird im ~/PDF/Verzeichnis angezeigt.

Das Ergebnis Ihres Dokuments ist nahezu perfekt (in Antwort 2 ist eine Fehlausrichtung aufgetreten, die in Office Word 2007 angezeigt wird, wenn es unter Crossover ausgeführt wird. Ich weiß nicht, ob es mit meiner Windows-Version zusammenhängt.).

Seite 1-2

Seiten 3-4

Das Problem ist nun, dass die grafische Wortschnittstelle auftaucht - ich weiß nicht, wie ich sie "kopflos" machen soll. Befehlszeilenoptionen für Word haben nicht geholfen ...

(1) Ich bin in keiner Weise mit Codeveawers verwandt - nur ein glücklicher Benutzer.

Rmano
quelle
4

Ich hatte dieses Problem auch in der Vergangenheit und musste es in letzter Zeit nicht mehr verwenden. Daher weiß ich nicht, ob es mich immer noch betrifft.

Zur Beantwortung der Frage:

Diese Frage: Wie Sie .doc oder .docx in .pdf stapelweise konvertieren, gibt in den Kommentaren einen Grund an, warum Ihre Konvertierung mit lowritermöglicherweise fehlschlägt:

Verwenden Sie kein "Leerzeichen" in der Befehlszeile ... Wenn Sie zum Leerzeichen gelangen, drücken Sie einfach "Tab";) - Pitto 16. November 12 um 13:11

Die Antwort auf diese Frage könnte möglicherweise auch helfen:

Wie kann ich eine ODT-Datei in eine PDF-Datei konvertieren?

Du würdest rennen libreoffice --headless --convert-to pdf *.odt. Sie können weitere Informationen zu libreoffice mit dem Befehl abrufen, man libreofficewenn Sie Hilfe benötigen, um den Befehl zu verstehen oder zu optimieren .

Sie können jedoch LibreOffice zurzeit nicht geöffnet haben, wie im folgenden Fehler beschrieben: https://bugs.freedesktop.org/show_bug.cgi?id=37531


Diese Frage hat auch mit Ubuntu zu tun, auch wenn sie sich auf SuperUser befindet: https://superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux

Bei der ersten Antwort stehen zwei Optionen zur Verfügung, eine mit CUPS und das Erstellen eines PDF-Druckers, die andere mit LaTex, obwohl Sie angegeben haben, dass LaTex fehlgeschlagen ist.

Was die Konvertierung nach PDF über CUPS-PDF betrifft, würden Sie ausführen, sudo apt-get install cups-pdfgefolgt von oowriter -pt pdf your_word_file.doc(x). Dies könnte bei Ihrem Problem mit dem Autor helfen.

Dies ist wahrscheinlich ein Problem mit der Tatsache, dass Sie versuchen, von DOC / DOCX nach PDF zu konvertieren, wenn die meisten Tools ODT verwenden, da sie mit LibreOffice / OpenOffice / AbiWord zusammenhängen. Daher können sie entweder nicht versuchen, es vom Microsoft DOCX-Format oder bei der Konvertierung in ODT zu konvertieren.

Es gibt mehrere Fehler bei einer Konvertierung von .docx w. Word Art (Version ist enthalten):

Dies ist aus dem LibreOffice-Forum in Bezug auf die Konvertierung von .doc und etwas .docx: http://en.libreofficeforum.org/node/5096 . Es ist von Januar 2013, also sollte es etwas zutreffen.

Darüber hinaus weiß ich es wirklich nicht. Hoffe du löst dein Problem!

RPiAwesomeness
quelle
Leider konnte keines Ihrer vorgeschlagenen Tools eine saubere Konvertierung durchführen.
Skeptisch Jule
2

Wenn Sie Libreoffice installiert haben, können Sie versuchen, das zu konvertieren. Drücken Sie einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:

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

Eine andere Möglichkeit ist die Installation von Cups PDF .

Drücken Sie dazu einfach Ctrl+ Alt+ Tauf Ihrer Tastatur, um das Terminal zu öffnen. Führen Sie beim Öffnen die folgenden Befehle aus:

sudo apt-get install cups-pdf

Erstellen Sie dann einen neuen Drucker, legen Sie ihn als PDF-Dateidrucker fest und benennen Sie ihn nach Belieben, sofern Sie den Namen kennen. Führen Sie dann Folgendes aus:

oowriter -pt pdf your_word_file.docx

Und Ihre PDF-Datei wird in sein ~/PDF.

Mitch
quelle
1
Hatte damit keinen Erfolg.
Skeptisch Jule
Dies kann antworten, warum.
Skeptisch Jule
Ich weiß Ihre Antwort zu schätzen. Es macht sehr viel Sinn, aber ich bin überrascht, dass das Drucken nicht funktioniert hat, da es wie das Drucken auf Papier ist ... :)
Mitch
Das Hauptproblem ist, dass LibreOffice das Dokument nicht einmal richtig öffnen und anzeigen kann. Folglich ist auch die Ausgabe falsch. Hat es auf deinem Linux geklappt?
Skeptisch Jule
Das ist gut zu wissen. Ich benutze Office nur für einfache Dokumente, es besteht kein Bedarf an komplexeren Dokumenten, aber wenn dies der Fall ist, stelle ich dies sicher und beziehe mich darauf. Vielen Dank für die großartige Frage, und ich werde sie als Favorit für zukünftige Referenz hinzufügen. Ich behalte diese Antwort und Kommentare als Referenz für andere Benutzer.
Mitch
2

Hier ist die bittere Wahrheit: Office-Lösungen für Linux sind Totalausfälle! Ich bin seit vielen Jahren ein Vollzeit-GNU / Linux-Benutzer und habe ständig nach verschiedenen Office-Lösungen gesucht und diese ausprobiert, vom alten Open-Office über das spätere Libre-Office bis hin zu Abi-Word usw. Haben alle versäumt, mir bei meiner Büroarbeit zu helfen. Bei nichtlateinischen Sprachen (von rechts nach links wie Persisch, Arabisch usw.) wird es noch schlimmer. Der Benutzer muss mit dieser Software kämpfen, um seine Arbeit zu erledigen! Und Microsoft Office-Kompatibilität gibt es einfach nicht. Ich kann stundenlang darüber reden, wie viel ich versucht habe und sie haben alle versagt, aber das ist nicht der Punkt dieser Frage.

Ich habe auch versucht, Microsoft Office mit WINE zu installieren und auszuführen, und zwar mit einigem Erfolg, aber es hat nicht gut funktioniert, und es ist größtenteils abgestürzt, als ich versucht habe, meine Office-Dateien zu öffnen.

LaTeX ist in Ordnung, aber keine Office-Lösung. LaTeX dient zum Festlegen von Schriftarten und ist eher ein Werkzeug für Profis. Es gibt weder Tabellenkalkulationen noch Präsentationen.

Also, was ist die Lösung?

Dies ist keine Befehlszeilenlösung. Die einzige Lösung, die ich mir in all den Jahren ausgedacht habe, um mich in meinem GNU / Linux-Betriebssystem zu halten und auch meine Büroarbeiten zu erledigen, besteht darin, eine minimale Microsoft Windows-Installation in einer virtuellen Maschine (wie VirtualBox) zu verwenden und zu installieren ein Microsoft Office-Anzug.

Bildbeschreibung hier eingeben

Es mag nicht schön klingen, aber es ist die einzige Lösung, die einwandfrei funktioniert und mich davon abhält, in meiner kostbaren Zeit mit schlechten Bürolösungen zu kämpfen. Zuerst dachte ich selbst, dass dies keine gute Lösung ist, aber nachdem ich mit allen anderen gescheitert bin und dieses VM-Zeug mehr als 2 Jahre lang gemacht habe, bin ich wirklich zufrieden damit :)

================================================ =============================

HINWEIS 1: Ich bewerbe keine Microsoft-Produkte! Ich versuche nur, das Problem zu lösen und mit dem Leben weiterzumachen.

HINWEIS-2: Wie bereits erwähnt, handelt es sich NICHT um eine Befehlszeilenlösung. Warum also die Antwort posten? Weil es eine GEPRÜFTE und GUT ARBEITENDE Option ist! Wenn keine WORKING-Befehlszeilenlösung verfügbar ist (was ich sehr vermute), ist eine ALTERNATIVE-Option besser als NO-Optionen.

Seyed Mohammad
quelle
1
Warum nur MS Word wineanstelle einer virtuellen Maschine verwenden?
Totti
1
Wie ich bereits erwähnte, waren meine Erfahrungen mit der Installation und Verwendung von MS-Office WINEnicht gut. Das Programm funktionierte nicht wie unter Windows (zeigte falsches Verhalten) und stürzte auch sehr oft ab!
Seyed Mohammad
3
Bisher hat noch niemand abgestimmt , aber in der Frage wird ausdrücklich nach einer Kommandozeilenlösung gefragt . Dies ist nicht nutzlos wegen MS, es ist nutzlos, weil es die Frage völlig ignoriert.
DJEIKYB
3
Seyed, bitte beachte, dass das OP explizit nach einer Kommandozeilenlösung fragt, die auf seinem Ubuntu-Server funktioniert (der wahrscheinlich nicht einmal eine GUI hat!). Ihre Antwort ist nicht schlecht, aber in diesem Fall nicht relevant.
Glutanimate
2
@ScepticalJule Lächerlich. Sie setzen explizit ein Kopfgeld auf eine Befehlszeilenlösung. Dann wählen Sie eine Antwort, die noch nicht einmal eine Antwort auf die Frage ist. Hast du mal die anderen Antworten studiert. Einschließlich dieses und meines?
don.joey
1

Hier sind einige Anwendungen, die Sie ausprobieren können, ob sie mit FF Multi Converter funktionieren, oder Sie können Kingsoft Office ausprobieren .

rstreeter78
quelle
FF Multi Converter installiert, Befehl ausgeführt ... nichts passiert. Kingsoft hat eine schöne Benutzeroberfläche, konnte die Datei jedoch nicht korrekt öffnen / anzeigen (Formeln fehlten, auch nachdem ich die erforderlichen Schriftarten installiert hatte. Die Buchstaben im Kreis fehlten ebenfalls).
Skeptisch Jule
0

Installieren Sie Calibre über das Software Center oder Synaptic und stellen Sie die Standardausgabe auf PDF ein.

Führen Sie an einer Shell-Eingabeaufforderung Folgendes aus

ebook-convert Dummy - Dateiname .docx .pdf -h

K7AAY
quelle
Das schneidet den Text irgendwie ab.
don.joey
Absturz mit ValueError: No plugin to handle input format: docx. Google hat in diesem Fall nicht geholfen, daher melde ich einen Fehler.
Skeptisch Jule