Konversikan docx ke PDF

41

Saya mencoba untuk mengkonversi file docx ke pdf di server Ubuntu saya menggunakan baris perintah tetapi tidak ada konverter yang saya coba sejauh ini tampaknya mengkonversi file Word 2007/2010/2013 dengan benar.

Konverter daring yang tampak dapat mengelolanya tanpa masalah tetapi layanan Web bukanlah suatu pilihan karena file-file tersebut berisi data sensitif. Untuk tes saya menggunakan file Word 2007 ini karena berisi beberapa elemen penting (rumus, grafik vektor, gambar, daftar, dll.). Saya menguji alat-alat berikut (sebagian dari posting ini ):

lowriter (LibreOffice Writer) - output salah (lingkaran seharusnya ada di halaman terakhir, bukan yang pertama)

masukkan deskripsi gambar di sini

unoconv- sama seperti LibreOffice karena tidak menggunakan konverternya sendiri. Konversi ke odt pertama dan kemudian pdf mengacaukan file sepenuhnya.

abiword --to=pdf filename.doc - salah dan tidak lengkap (banyak elemen tidak ada):

masukkan deskripsi gambar di sini

OpenOffice Writer - hasil yang sama seperti untuk abiword

wvPDF - macet dengan pesan kesalahan berikut:

~ $ wvPDF 2007_Office_DocEncryption.docx test.pdf

Direktori saat ini: / home / webmt / dev / test /

Beberapa masalah menjalankan lateks.

Periksa Kesalahan di test.log

Melanjutkan ...

Konversi ke dvi gagal

Apakah ada cara untuk mengkonversi file docx ke PDF di Linux dengan benar? Ini juga akan membantu saya jika saya tahu itu bekerja untuk seseorang dengan salah satu program yang saya sebutkan. Saya akan memulai hadiah segera setelah SE mengizinkan saya.

ps Saya menggunakan server Ubuntu 12.04


Kesimpulan :

Saya harus menyimpulkan bahwa bagi saya, seperti untuk saat ini, tidak ada alat yang dapat diandalkan yang akan bekerja dengan format MS Word baru dan semua jenis elemen di Ubuntu dan membuat salinan file docx satu-ke-satu. Tidak ada alat yang saya uji yang dapat mengkonversi file sampel dengan benar. Karena saya akan menghadapi versi / konten dokumen yang sangat berbeda dan kualitas output memiliki salah satu prioritas tertinggi, saya akhirnya akan melakukan konversi dengan menggunakan macro VB di Word pada server Windows yang terhubung ke Linux saya.

Saya akan mengatur posting mendapatkan hasil terbaik sebagai jawaban yang diterima. Namun, hadiah itu dimaksudkan untuk solusi dengan konversi yang benar-benar benar. Terima kasih untuk semuanya, lagi.

Jule yang skeptis
sumber
3
mencoba lateks?
Braiam
@ScepticalJule, Ya ada masalah di akhir. Saya baru saja melihat halaman pertama.
1
@Braiam Bisakah Anda melepaskan tautan untuk mengonversi dengan lateks?
Skeptical Jule
2
@ScepticalJule Saya pikir Braiam berarti Anda harus mencoba untuk menulis dokumen Anda dalam lateks segera. Konversi dari docx ke latex jauh lebih menyakitkan daripada konversi dari docx ke pdf. Anda dapat mencoba melakukan konversi dari docx ke doc dan kemudian dari doc ke pdf. Tetapi Anda harus menemukan alat LO independen untuk melakukannya. Beri tahu saya jika saya bisa membantu dengan cara lain dan apakah jawaban saya membantu Anda.
don.joey

Jawaban:

58

Jawaban ini melewati semua tes, tetapi bagan alur satu di dokumen tes Anda.

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

Mengapa ini lebih baik daripada metode lain yang disarankan sejauh ini?

Saya telah menguji metode lain yang disarankan sejauh ini (terutama oowriterdan ebook-convert), tetapi mereka lulus tes lebih sedikit daripada metode ini. The ebook-convertMetode strip margin dan bagian dari teks-teks dari dokumen.

Metode ini bahkan menghasilkan hasil yang lebih baik daripada konverter profesional sebagai rainbowpdf .

Saya juga mencoba mengonversinya menjadi html, tetapi gambar dengan kuadrat dalam lingkaran dan diagram alur salah.

Mengapa tes diagram alir gagal?

Tampaknya libreoffice dan unoconv memiliki beberapa masalah dengan merender diagram alur yang ada dalam file .docx dengan benar. Ini mungkin karena itu dibuat menggunakan seni pintar di Microsoft Office. Itulah masalahnya. Itu adalah bug yang juga dibahas di utas ini . Informasi tekstual dan visual hadir dalam pdf yang dihasilkan dari metode di atas seperti yang Anda lihat (meskipun saya harus memilih teks).

Diagram alir yang tidak ditampilkan sepenuhnya seperti yang diharapkan.

Warna font, misalnya, tidak dibaca dengan benar dan beberapa baris terlalu panjang. Saya tidak mengetahui adanya solusi linux yang dapat menampilkan seni pintar dengan benar. :(

Ini juga alasan mengapa semua printsolusi yang diposting di halaman ini tidak akan memuaskan Anda.

Pendeknya

Singkatnya, apa yang Anda lakukan sangat sulit dan saat ini tidak ada solusi yang akan memuaskan Anda sepenuhnya. Tumit achilles dari konversi docx2pdf adalah seni yang cerdas. Jika Anda dapat hidup tanpa itu atau jika Anda dapat menemukan cara untuk melihat seni pintar dan mengubahnya entah bagaimana menjadi gambar, Anda dapat mencapai tujuan Anda.

Opsi 1. Paksa pengguna Anda untuk menghadapi masalah

Ini adalah solusi yang sangat tidak tepat. Pembuat konten Anda dapat menyimpan seni cerdas mereka sebagai jpg seperti yang dijelaskan di halaman bantuan kantor dan karenanya konversi mungkin dilakukan di server Anda.

Opsi 2. Retas jalan Anda di sekitar masalah

Jika diagram alir sering sangat mirip dan tergantung pada seberapa baik pengembang Anda, Anda dapat mencoba dan mengonversi seni pintar secara terpisah. Anda bisa, mengekstrak file drawing1.xml dari .docx kumpulan dokumen dan kemudian menggunakan pemrosesan bahasa alami dan beberapa peretasan gila untuk membangun kembali seni cerdas. Misalnya, Anda harus mengacaukan xml jenis ini:

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

Atau sebagai solusi minimal Anda setidaknya mengekstrak teks ( <a:t>?) Dari file dan menyimpannya dengan cara yang lebih mudah. Atau jika diagram alir pdf Anda sama, Anda bisa menulis skrip untuk mengubah warna teks dan panjang baris dalam xml itu sendiri. Kemudian Anda dapat menjalankan doc2pdfdan Anda akan memiliki file yang pada dasarnya memiliki semua info yang benar, tetapi mungkin tidak memformat. Dalam hal diagram alir Anda mungkin juga ingin menyertakan beberapa pemformatan, karena pemformatan adalah bagian dari info.

Opsi 3. Gunakan layanan pihak ketiga

Saya telah melakukan beberapa penelitian lebih lanjut beberapa hari terakhir dan saya telah menemukan layanan yang melakukan konversi dengan sempurna: zamzar . Zamzar memungkinkan Anda untuk mengunggah file docx dan kemudian mengirimkan tautan kepada Anda melalui email. Mereka juga memiliki layanan (membayar?) Di mana Anda dapat mengirim file apa pun ke [email protected] dan kemudian mendapatkan file yang dikonversi kembali di kotak masuk Anda. Anda dapat dengan mudah membangun sistem di sekitar tempat ini untuk mengirim file secara otomatis dan menguraikannya dari email. Ini bukan pekerjaan yang banyak dan hasil akhirnya adalah yang terbaik.

Catatan

  • Jika ada yang memiliki layanan lain yang melakukan hal yang sama, silakan mengeditnya.
  • Saya telah mengirimkan dukungan zamzar untuk menanyakan apakah mereka memiliki api. Itu akan lebih mudah.
  • Mungkin apose untuk .NET dan Java juga bisa membantu? Atau docx4java seperti dalam posting SO yang sangat terkait ini .
  • Pilihan lain adalah untuk melihat ke odf-converter yang tampaknya tanggal dan tergantung pada openoffice daripada libreoffice.
  • Sekarang saya dapat mengonfirmasi bahwa java jodconverter juga mengalami kegagalan diagram alir konversi.

Saya sebenarnya telah meluangkan waktu untuk menguji berbagai metode yang diusulkan pada halaman ini. Harap cadangkan semua komentar dengan tes yang sebenarnya.

jangan
sumber
1
Saya mendapat berita dari zamzar: "Saat ini kami memiliki API yang kami harap akan diluncurkan dalam Beta dalam beberapa bulan ke depan - kami dapat membuat Anda ditambahkan ke uji coba beta jika ini menarik?" Mereka juga menyebutkan bahwa sistem konversi mereka adalah sesuatu yang telah mereka kembangkan sendiri.
don.joey
@jasonplutext Saya setuju dengan pengulas bahwa hasil edit Anda tidak membantu. Sebagai penulis plutext (saya kira?) Saya sarankan Anda menambahkan jawaban Anda sendiri dengan penafian yang menyatakan afiliasi Anda. Terima kasih.
don.joey
Adakah pembaruan dalam beberapa tahun terakhir?
becko
@becko saya belum menindaklanjutinya. Mungkin menetapkan hadiah untuk orang lain?
don.joey
Catatan dari masa depan: penggunaan yang tepat di versi terbaru lowritersekarang lowriter --convert-to pdf input_file.docx. Penggunaan --pt pdfakan gagal secara diam-diam.
ACK_stoverflow
6

Ini adalah solusi baris perintah yang berfungsi dengan baik --- tetapi menggunakan perangkat lunak berpemilik.

Saya pikir masalah mendasarnya adalah format Microsoft Word sepenuhnya dapat dimengerti hanya untuk Microsoft Word (bahkan di sana, ada perbedaan antar versi --- ada file Word dari masa lalu yang terbuka dengan format yang salah di versi yang lebih baru). Semua solusi lainnya adalah perkiraan dan peretasan, sehingga mereka akan berfungsi atau tidak tergantung pada file.

Jadi untuk memastikan Anda perlu memproses file .docx Anda dengan instalasi Microsoft Word (dan ya, saya pikir itu pilihan mereka dan itu adil. Jika Anda tidak ingin menggunakan Word, jangan gunakan itu --- saya pergi dengan --- saya pergi dengan LaTeX untuk pekerjaan saya, tetapi sulit untuk meyakinkan seluruh dunia di sekitar ...).

Saya menggunakan sejak lama Crossover untuk menjalankan Microsoft Office di Linux Desktop saya (1), merasa cukup berguna. Mungkin itu bekerja dengan anggur juga --- tidak pernah mencoba.

Saya melakukan konversi menggunakan konfigurasi ini:

1) Saya telah menginstal Crossover

2) Saya telah menginstal Microsoft Office versi saya di bawah Crossover

3) Di Microsoft Word, nonaktifkan "pencetakan latar belakang"

4) Saya telah cups-pdfmenginstal printer dan dipilih sebagai printer default.

5) Untuk melakukan konversi, jalankan (petunjuk di sini ):

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

6) File Anda yang dikonversi akan muncul di ~/PDF/direktori.

Dokumen Anda keluar hampir dengan sempurna (ada beberapa ketidaksejajaran pada jawaban # 2, yang ditampilkan di Office Word 2007 saat berjalan di bawah Crossover --- Saya tidak tahu apakah itu terkait dengan versi Windows saya).

pagew 1-2

halaman 3-4

Sekarang, masalahnya adalah antarmuka kata grafis akan muncul --- Saya tidak tahu bagaimana membuatnya "tanpa kepala". Opsi baris perintah untuk Word tidak membantu ...

(1) Saya sama sekali tidak terkait dengan Codeveawers --- hanya pengguna yang bahagia.

Rmano
sumber
4

Saya juga memiliki masalah ini di masa lalu, tidak harus menggunakannya belakangan ini, jadi saya tidak tahu apakah itu masih mempengaruhi saya.

Adapun untuk menjawab pertanyaan:

Pertanyaan ini: Bagaimana mengonversi batch .doc atau .docx ke .pdf memberi alasan di komentar mengapa konversi Anda lowritermungkin gagal:

Waspadalah terhadap penggunaan karakter "spasi" dari baris perintah ... Ketika Anda sampai ke karakter spasi cukup tekan "tab";) - Pitto 16 Nov 'jam 13:11

Jawaban pertanyaan ini juga mungkin dapat membantu:

Bagaimana saya bisa mengonversi file ODT ke PDF?

Anda akan lari libreoffice --headless --convert-to pdf *.odt. Anda bisa mendapatkan lebih banyak info tentang libreoffice dengan perintah man libreofficejika Anda membutuhkan bantuan untuk memahami atau mengubah perintah untuk bekerja.

Namun, Anda tidak dapat memiliki LibreOffice terbuka pada saat itu, sesuai bug ini: https://bugs.freedesktop.org/show_bug.cgi?id=37531


Pertanyaan ini juga terkait Ubuntu, meskipun ada di SuperUser: https://superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux

Jawaban pertama memiliki dua opsi, satu menggunakan CUPS dan membuat printer PDF, yang lainnya menggunakan LaTex, meskipun Anda mengatakan bahwa LaTex gagal.

Sedangkan untuk mengkonversi ke PDF melalui CUPS PDF Anda akan menjalankan sudo apt-get install cups-pdfdiikuti oleh oowriter -pt pdf your_word_file.doc(x). Ini mungkin membantu masalah oowriter Anda.

Ini mungkin masalah dengan fakta bahwa Anda mencoba untuk mengkonversi ke PDF dari DOC / DOCX, ketika sebagian besar alat menggunakan ODT, karena mereka terkait dengan LibreOffice / OpenOffice / AbiWord. Dengan demikian, mereka gagal mencoba untuk mengubahnya dari format DOCX Microsoft atau dalam konversi ke ODT.

Ada beberapa bug dengan konversi dari .docx w. Seni Kata (versi disertakan):

Ini dari forum LibreOffice tentang konversi dari .doc dan agak .docx: http://en.libreofficeforum.org/node/5096 . Ini dari Januari 2013, jadi itu seharusnya berlaku.

Di luar semua ini, saya benar-benar tidak tahu. Semoga Anda menyelesaikan masalah Anda!

Kehadiran RPi
sumber
Maaf tetapi tidak ada alat yang disarankan Anda dapat melakukan konversi bersih.
Skeptical Jule
2

Jika Anda menginstal Libreoffice, Anda dapat mencoba mengonversi menggunakan itu. Cukup tekan Ctrl+ Alt+ Tdi keyboard Anda untuk membuka Terminal. Saat terbuka, jalankan perintah di bawah ini:

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

Pilihan lain adalah menginstal Piala PDF .

Untuk melakukannya cukup tekan Ctrl+ Alt+ Tpada keyboard Anda untuk membuka Terminal. Saat terbuka, jalankan perintah di bawah ini:

sudo apt-get install cups-pdf

Kemudian buat printer baru, tetapkan sebagai printer file PDF, dan beri nama apa pun yang Anda inginkan, selama Anda tahu namanya, kemudian jalankan:

oowriter -pt pdf your_word_file.docx

Dan file PDF Anda akan berada di ~/PDF.

Mitch
sumber
1
Tidak berhasil dengan itu.
Skeptis Jule
Ini mungkin menjawab mengapa.
Skeptical Jule
Saya menghargai tanggapan Anda, Ini sangat masuk akal, tetapi saya terkejut bahwa pencetakan tidak berhasil, karena suka mencetak ke kertas ... :)
Mitch
Masalah utamanya adalah bahwa LibreOffice bahkan tidak dapat membuka dan menampilkan dokumen dengan benar. Akibatnya output juga tidak benar. Apakah itu berfungsi di Linux Anda?
Skeptis Jule
Senang mendengarnya. Saya hanya menggunakan kantor hanya untuk dokumen-dokumen dasar, kebutuhan belum muncul untuk sesuatu yang lebih kompleks, tetapi ketika itu terjadi, saya akan memastikan, dan merujuk ini. Terima kasih atas pertanyaannya, dan saya yakin akan menambahkannya sebagai favorit untuk referensi di masa mendatang. Saya akan menyimpan jawaban ini, dan komentar sebagai referensi untuk dilihat pengguna lain.
Mitch
2

Inilah kebenaran yang pahit: Solusi Office untuk Linux adalah kegagalan total! Saya telah menjadi pengguna GNU / Linux penuh waktu selama bertahun-tahun dan saya terus mencari dan mencoba berbagai solusi kantor, dari Open-Office lama, hingga Libre-Office, Abi-Word, dll ... Mereka semuanya gagal membantu saya melakukan pekerjaan kantor saya. Bahkan menjadi lebih buruk ketika datang ke bahasa non-Latin (bahasa kanan-ke-kiri seperti Persia, Arab, dll). Pengguna harus berjuang dengan perangkat lunak ini untuk menyelesaikan pekerjaannya! Dan kompatibilitas Microsoft Office tidak ada. Saya dapat berbicara berjam-jam tentang seberapa banyak saya telah mencoba dan mereka semua telah mengecewakan saya, tetapi ini bukan inti dari pertanyaan ini.

Saya juga mencoba menginstal dan menjalankan Microsoft Office menggunakan WINE, dan entah bagaimana berhasil tetapi tidak berhasil dengan baik dan sebagian besar macet ketika saya mencoba membuka file kantor saya.

LaTeX baik-baik saja, tetapi itu bukan solusi kantor. LaTeX adalah untuk pengaturan tipe, dan ini lebih seperti alat pro, dan tidak ada spread-sheet, atau presentasi.

Jadi apa solusinya?

Ini bukan solusi baris perintah. Satu-satunya solusi yang saya miliki selama bertahun-tahun, untuk menjaga saya tetap di dalam GNU / Linux OS saya dan juga menyelesaikan pekerjaan kantor saya, adalah dengan menggunakan instalasi Microsoft Windows minimal dalam mesin virtual (seperti VirtualBox) dan menginstal setelan Microsoft Office.

masukkan deskripsi gambar di sini

Ini mungkin kedengarannya tidak cantik, tetapi itu satu-satunya solusi yang bekerja dengan sempurna dan menyelamatkan saya dari pertempuran dengan solusi buruk-kantor di waktu berharga saya. Pada awalnya, saya sendiri berpikir ini bukan solusi yang baik, tetapi setelah gagal dengan yang lain dan melakukan hal-hal VM ini selama lebih dari 2 tahun, saya sangat senang dengan itu :)

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

CATATAN-1: Saya tidak mengiklankan produk Microsoft! Hanya berusaha membantu menyelesaikan masalah dan melanjutkan hidup.

CATATAN-2: Seperti yang ditekankan di atas, ini BUKAN solusi baris perintah. Jadi mengapa memposting jawabannya? Karena ini merupakan opsi YANG DIUJI dan BEKERJA DENGAN BAIK! Jika tidak ada solusi baris perintah KERJA yang tersedia (yang sangat saya duga adalah masalahnya), maka memiliki opsi ALTERNATIF lebih baik daripada opsi NO.

Mohammad Sayyid
sumber
1
Mengapa hanya menggunakan kata MS di winebukannya mesin virtual?
totti
1
Seperti yang saya sebutkan, pengalaman saya menginstal dan menggunakan MS-Office menggunakan WINEtidak berjalan dengan baik. Program tidak berfungsi seperti pada Windows (menunjukkan perilaku yang salah) dan juga sering crash!
Seyed Mohammad
3
Tidak ada Ohe telah downvoted belum , tapi pertanyaannya secara eksplisit meminta untuk baris perintah solusi. Ini bukan sia-sia karena MS, tidak berguna karena sama sekali mengabaikan pertanyaan.
djeikyb
3
Seyed, harap dicatat bahwa OP secara eksplisit meminta solusi command-line yang akan bekerja pada server Ubuntu-nya (yang kemungkinan bahkan tidak memiliki GUI!). Jawaban Anda tidak buruk tetapi tidak relevan dalam kasus ini.
Glutanimate
2
@SepticalJule Konyol. Anda secara eksplisit memberi hadiah pada solusi baris perintah. Kemudian Anda memilih jawaban yang bahkan bukan jawaban untuk pertanyaan itu. Pernahkah Anda mempelajari jawaban lainnya. Termasuk yang ini dan milikku?
don.joey
1

Berikut adalah beberapa aplikasi yang dapat Anda coba dan lihat apakah mereka berfungsi FF Multi Converter atau Anda dapat mencoba Kingsoft Office .

rstreeter78
sumber
Terpasang FF Multi Converter, menjalankan perintah ... tidak ada yang terjadi. Kingsoft memiliki GUI yang bagus tetapi tidak bisa membuka / menampilkan file dengan benar (rumus hilang bahkan setelah saya menginstal font yang diperlukan. Huruf-huruf dalam lingkaran juga hilang).
Skeptical Jule
0

Instal Calibre dari Software Center atau Synaptic , dan atur output default ke PDF.

Dari prompt shell, lakukan

ebook-convert dummyfilename .docx .pdf -h

K7AAY
sumber
Ini memotong teks entah bagaimana.
don.joey
Kecelakaan dengan ValueError: No plugin to handle input format: docx. Google tidak membantu yang ini jadi saya akan melaporkan bug.
Skeptis Jule