Docx'i PDF'ye dönüştür


41

Komut satırını kullanarak Ubuntu sunucumda docx dosyalarını pdf'ye dönüştürmeye çalışıyorum, ancak şimdiye kadar denediğim hiçbir dönüştürücü Word 2007/2010/2013 dosyalarını doğru bir şekilde dönüştüremiyor gibi görünüyor.

Görünüşe göre çevrimiçi dönüştürücüler sorunu sorunsuz bir şekilde yönetebiliyor, ancak Web hizmetleri bir seçenek değil çünkü dosyalar hassas veriler içeriyor. Testler için bu Word 2007 dosyasını kullanıyorum çünkü bazı önemli unsurları içeriyor (formüller, vektör grafikleri, resimler, listeler vb.). Aşağıdaki araçları test ettim (kısmen bu gönderiden ):

lowriter (LibreOffice Writer) - hatalı çıktı (dairenin ilki değil, son sayfada olması gerekiyordu)

görüntü tanımını buraya girin

unoconv- LibreOffice ile aynıdır çünkü kendi dönüştürücüsünü kullanmaz. Önce odt'e, sonra pdf'e dönüştürmek dosyayı tamamen karıştırır.

abiword --to=pdf filename.doc - yanlış ve eksik (birçok unsur eksik):

görüntü tanımını buraya girin

OpenOffice Writer - abiword ile aynı sonuç

wvPDF - aşağıdaki hata iletisiyle kilitlenme:

~ $ wvPDF 2007_Office_DocEncryption.docx test.pdf

Geçerli dizin: / ev / webmt / dev / test /

Lateks çalışan bazı sorun.

Test.log dosyasındaki Hataları kontrol edin

Devam ediyor...

Dvi'ye dönüştürme başarısız oldu

Docx dosyalarını Linux'ta doğru şekilde PDF'ye dönüştürmenin bir yolu var mı? Daha önce bahsettiğim programlardan birine sahip biri için işe yaradığını bilsem bana da yardımcı olurdu. SE bana izin verir etmez bir lütuf başlayacağım.

ps Ubuntu server 12.04 kullanıyorum


Sonuç :

Benim için olduğu gibi, şimdi olduğu gibi, yeni MS Word formatları ve her türlü unsurunu Ubuntu'da çalıştıracak ve docx dosyalarının bire bir kopyasını yaratacak güvenilir bir araç olmadığı sonucuna varmak zorunda kaldım. Test ettiğim araçların hiçbiri örnek dosyayı düzgün bir şekilde dönüştüremadı. Çok farklı türden belge sürümleriyle / içerikleriyle yüz yüze geleceğim ve çıktı kalitesi en yüksek önceliğe sahip olacağı için, Linux'a bağlı bir Windows sunucusundaki Word'deki VB makroları aracılığıyla dönüşümleri gerçekleştireceğim.

Gönderiyi en iyi sonuçları almak için kabul edilen cevap olarak ayarlayacağım. Ancak, ödül kesinlikle doğru dönüşüme sahip bir çözüme yönelikti. Herkese tekrar teşekkürler.


3
lateks denedi?
Braiam

@ScepticalJule, Evet sonunda bir sorun var. Sadece ilk sayfaya baktım.

1
@Braiam Lateks ile dönüştürmek için bir bağlantı bırakabilir misiniz?
Şüpheci Jule


2
@ScepticalJule Braiam'in belgenizi hemen lateks içine yazmaya çalışmanız gerektiği anlamına geldiğini düşünüyorum. Docx'ten latekse dönüşümler, docx'ten pdf'ye dönüşümden çok daha acı vericidir. Docx'ten doc'ya ve ardından doc'dan pdf'ye dönüşüm yapmayı deneyebilirsiniz. Ancak bunun için LO bağımsız bir araç bulmanız gerekir. Başka bir şekilde yardım edebilir miyim ve cevabımın size yardım edip etmediğini bana bildirin.
don.joey

Yanıtlar:


57

Bu cevap tüm testlerden geçer , ancak akış çizelgesi test belgenizde bir tanedir.

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

Bu neden bugüne kadar önerilenden daha iyi?

Şu ana kadar önerilen diğer yöntemleri (özellikle oowriterve ebook-convert) test ettim , ancak bu yöntemden daha az test geçirdiler. ebook-convertYöntem marjlarını ve belgenin dışarı metinlerinin bir parçasını söker.

Bu yöntem bile rainbowpdf olarak profesyonel bir dönüştürücüden daha iyi sonuçlar verir .

Ayrıca onu html'ye çevirmeyi de denedim, ancak dairenin karesi ve akış şemasındaki çizim yanlış.

Akış şeması testi neden başarısız?

Görünüşe göre libreoffice ve unoconv, .docx dosyasındaki akış şemasını doğru şekilde göstermekte bazı problemler yaşamaktadır. Bu muhtemelen Microsoft Office'te akıllı sanat kullanılarak yapıldığı içindir . Sorun bu. Bu da bu konu üzerinde tartışılan bir hatadır . Metinsel ve görsel bilgi, pdf'te yukarıdaki yöntemden görebileceğiniz gibi bulunmaktadır (yine de metni seçmek zorunda kaldım).

Beklendiği gibi tamamen görüntülenmeyen akış şeması.

Örneğin, yazı tipi rengi düzgün okunmuyor ve bazı satırlar çok uzun. Akıllı sanatı doğru gösterebilecek herhangi bir linux çözümünün farkında değilim. :(

Bu, printbu sayfada yayınlanan tüm çözümlerin sizi tatmin etmemesinin nedeni de budur .

Kısacası

Kısacası, yaptığınız şey gerçekten zor ve şu anda sizi tamamen tatmin edecek hiçbir çözüm yok. Docx2pdf dönüşümlerinin aşil topuğu akıllı sanattır. O olmadan yaşayabilir veya akıllı sanatı tespit etmenin ve bir şekilde bir görüntüye dönüştürmenin bir yolunu bulursanız , hedefinize ulaşabilirsiniz.

Seçenek 1. Kullanıcılarınızı sorunla baş etmeye zorlayın

Bu çok tuhaf bir çözüm. İçerik oluşturucularınız akıllı sanatlarını ofis yardım sayfalarında açıklandığı şekilde jpg olarak kaydedebilir ve bu nedenle sunucunuzda dönüşüm mümkün olabilir.

Seçenek 2. Problemi çözerken yolunuzu kırın

Akış şemaları genellikle çok benzerse ve ne kadar iyi bir geliştirici olduğunuza bağlı olarak, akıllı sanatı ayrı ayrı deneyebilir ve dönüştürebilirsiniz. Drawing1.xml dosyasını .docx belge kümesinden çıkarın ve akıllı bir sanatı yeniden oluşturmak için doğal dil işlemeyi ve bazı çılgın kesimleri kullanın. Örneğin, bu tür xml'lerle uğraşmanız gerekir:

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

Veya asgari bir çözüm olarak, en azından metni ( ?) Dosyadan ayıklayın ve <a:t>daha kolay bir şekilde kaydedin. Veya pdfs dosyanızın akış çizelgeleri aynıysa, xml'nin içindeki metin rengini ve satır uzunluğunu değiştirmek için bir komut dosyası yazabilirsiniz. Sonra koşabilir doc2pdfve temelde tüm doğru bilgileri içeren bir dosyaya sahip olabilirsiniz , ama belki de biçimlendirmeyi değil. Akış çizelgeleri söz konusu olduğunda, muhtemelen biçimlendirmenin bir kısmı olduğundan, biçimlendirmenin bir kısmını da dahil etmek istersiniz .

Seçenek 3. Üçüncü taraf bir servisi kullanın

Son birkaç gündür biraz daha araştırma yaptım ve dönüşümü mükemmel yapan bir servis buldum: zamzar . Zamzar, bir docx dosyası yüklemenize izin verir ve ardından size bir e-posta gönderir. Ayrıca, pdf@zamzar.com adresine herhangi bir dosyayı gönderebileceğiniz ve dönüştürülen dosyayı gelen kutunuza geri alabileceğiniz (ücretli?) Bir hizmeti vardır. Bu dosyayı kolayca otomatik olarak gönderdiğiniz ve e-postadan ayrıştırdığınız bir sistem oluşturabilirsiniz. Bu çok fazla iş değil ve sonuç en iyisidir.

notlar

  • Herhangi birinin aynı şeyi yapan başka hizmetleri varsa, lütfen bunları düzenlemek için çekinmeyin.
  • Bir api olup olmadığını sormak için zamzar desteğini gönderdim. Bu daha kolay olurdu.
  • Belki apose .NET ve Java için de yardım edebilir? Veya bu çok ilişkili SO yazısında olduğu gibi docx4java .
  • Başka bir seçenek de, tarihli ve kütüphanecilikten ziyade openoffice'e bağlı olan odf dönüştürücüye bakmaktır .
  • Java jodconverter'ın da sıkıntı yaşadığını doğrulayabilirim , akış şeması dönüşümünde başarısız olur.

Bu sayfada önerilen farklı yöntemleri denemek için zaman ayırdım. Lütfen gerçek testlerle ilgili yorumlarınızı geri alın.


1
Zamzar'dan haber aldım: "Şu anda önümüzdeki birkaç ay içinde Beta'da başlatmayı umduğumuz bir API'miz var - bu ilginizi çekerse sizi beta denemesine ekleyebilir miyiz?" Ayrıca, dönüşüm sistemlerinin şirket içinde geliştirdikleri bir şey olduğunu da belirtti.
don.joey

@ jasonplutext Düzenlemenizin yardımcı olmadığına dair hakemlere katılıyorum. Plutext'in yazarı olarak (Sanırım?) Bağlantınızı belirten bir feragatname ile kendi cevabınızı eklemenizi öneririm. Teşekkürler.
don.joey

Son birkaç yılda herhangi bir güncelleme var mı?
becko

@becko Ben takip etmedim. Belki bir başkası için bir ödül aldı?
don.joey

Gelecekten not: son sürümlerinde uygun kullanım lowriterşimdi lowriter --convert-to pdf input_file.docx. Kullanımı --pt pdfsessizce başarısız olur.
ACK_stoverflow

6

Bu düzgün çalışan bir komut satırı çözümüdür --- ancak özel yazılım kullanır.

Temel sorunun, Microsoft Word biçimlerinin yalnızca Microsoft Word için tamamen anlaşılabilir olduğunu düşünüyorum (hatta sürümler arasında farklılıklar var --- geçmişte yanlış şekilde yeni sürümlerde biçimlendirilmiş olarak açılan Word dosyaları var). Diğer tüm çözümler yaklaşık değerler ve kesmelerdir, bu nedenle dosyaya bağlı olarak çalışacaklar veya çalışmayacaklar.

Bu nedenle .docx dosyalarınızı bir Microsoft Word kurulumuyla işlemeniz gerektiğinden emin olmak için (ve evet, sanırım bu onların seçeneği ve adil. Word'ü kullanmak istemiyorsanız, kullanmayın --- kullanıyorum LaTeX işim için, ancak dünyanın geri kalanını ikna etmek zor ...).

Oldukça eskiden beri Microsoft Office'i Linux Masaüstümde (1) çalıştırmak için kullanıyorum ve oldukça faydalı buluyorum. Belki de şarapla çalışır --- hiç denememiştir.

Bu yapılandırmayı kullanarak dönüşümü yapıyorum:

1) Crossover kurulu

2) Microsoft Office sürümünü Crossover altında kurdum

3) Microsoft Word'de "arka plan yazdırmayı" devre dışı bırakın

4) cups-pdfYazıcıyı kurdum ve varsayılan yazıcı olarak seçtim .

5) Dönüştürme işlemini yapmak için, çalıştır ( buradaki ipucu ):

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

6) Dönüştürülen dosyanız ~/PDF/dizinde görünecektir .

Belge neredeyse tamamen çıkıyor (Yanıt # 2'de, Crossover altında çalışırken Office Word 2007'de gösterilen bazı yanlış hizalamalar var --- Windows sürümümle ilgili olup olmadığını bilmiyorum).

1-2

sayfa 3-4

Şimdi, sorun şu ki grafik kelimesi arayüzü ortaya çıkacak --- --- "başsız" nasıl yapılacağını bilmiyorum. Word için komut satırı seçenekleri yardımcı olmadı ...

(1) Codeveawers ile ilgili hiçbir şekilde değilim - sadece mutlu bir kullanıcı.


4

Ayrıca geçmişte bu sorunu yaşadım, son zamanlarda kullanmak zorunda değildim, bu yüzden hala beni etkileyip etkilemediğini bilmiyorum.

Soruyu cevaplamaya gelince:

Bu soru: Toplu dönüştürme .doc veya .docx dosyasını .pdf biçimine dönüştürmek için neden yorumlarda bir neden sağlar lowriter:

Komut satırından "boşluk" karakterini kullanmaya dikkat edin ... Boşluk karakterine geldiğinizde basitçe "tab";) - Pitto Nov 16 '12 'de 13:11

Bu sorunun cevabı da muhtemelen yardımcı olabilir:

ODT dosyasını bir PDF'ye nasıl dönüştürebilirim?

Sen aday olacağını libreoffice --headless --convert-to pdf *.odt. man libreofficeKomutun çalışabilmesi için anlaşılması ya da düzeltilmesi konusunda yardıma ihtiyacınız olursa , komutla birlikte libreoffice hakkında daha fazla bilgi edinebilirsiniz .

Ancak, LibreOffice’i şu anda açık bırakamazsınız: https://bugs.freedesktop.org/show_bug.cgi?id=37531


Bu soru, Süper Kullanıcı üzerinde olmasına rağmen, Ubuntu ile de ilgilidir: https://superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux

İlk yanıtta, biri CUPS kullanan ve bir PDF yazıcısı yaratan, diğeri LaTex kullanan iki seçenek var, ancak LaTex'in başarısız olduğunu söylediniz.

CUPS PDF aracılığıyla PDF'ye dönüştürme konusunda, sudo apt-get install cups-pdfardından çalıştırılır oowriter -pt pdf your_word_file.doc(x). Bu, oowriter sorununuza yardımcı olabilir.

Bu muhtemelen, çoğu araç LibreOffice / OpenOffice / AbiWord ile ilgili olduğu için, ODT kullandığında DOC / DOCX'ten PDF'ye dönüştürmeye çalıştığınız gerçeği ile ilgili bir sorundur. Bu nedenle, ya Microsofts DOCX biçiminden ya da ODT'ye dönüştürülmekte başarısız oluyorlar.

.Docx w'den dönüştürülen birkaç hata var. Kelime Sanatı (sürüm dahil):

Bu, LibreOffice forumundan .doc ve bir şekilde .docx'ten dönüştürme ile ilgili olarak: http://en.libreofficeforum.org/node/5096 . 2013 yılının Ocak ayından bu yana biraz başvurması gerekiyor.

Bunların ötesinde, gerçekten bilmiyorum. Umarım sorununuzu çözersiniz!


Üzgünüz, önerilen araçlarınızın hiçbiri temiz bir dönüşüm yapamadı.
Şüpheci Jule

2

Eğer Libreoffice kurulu ise, bunu kullanarak dönüştürmeyi deneyebilirsiniz. Terminal'i açmak için klavyenizdeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutları çalıştırın:

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

Diğer bir seçenek de Cups PDF'i yüklemektir .

Bunu yapmak için Terminal'i açmak için klavyenizdeki Ctrl+ Alt+ tuşlarına basın T. Açıldığında, aşağıdaki komutları çalıştırın:

sudo apt-get install cups-pdf

Ardından, yeni bir yazıcı oluşturun, onu bir PDF dosyası yazıcısı olarak ayarlayın ve adı bildiğiniz sürece istediğiniz şekilde adlandırın ve sonra çalıştırın:

oowriter -pt pdf your_word_file.docx

Ve PDF dosyanız olacak ~/PDF.


1
Bunlarla başarılı olamadım.
Şüpheci Jule

Bu neden cevap verebilir.
Şüpheci Jule

Yanıtınızı takdir ediyorum, çok mantıklı geliyor, ancak kağıda yazdırmak gibi baskı işlerinin işe yaramadığından şaşırdım ... :)
Mitch

En önemli sorun, LibreOffice'in belgeyi doğru şekilde açıp görüntüleyememesidir. Sonuç olarak, çıktı da yanlıştır. Linux'unuzda çalıştı mı?
Şüpheci Jule

Bunu bilmek güzel. Ofisi sadece basit belgeler için kullanıyorum, ihtiyaç daha karmaşık bir şey için ortaya çıkmadı, ancak olduğu zaman emin olacağım ve buna bakacağım. Harika bir soru için teşekkür ederiz ve eminim ki gelecekteki referans için favori olarak ekleyeceğim. Bu cevabı tutacağım ve yorumları diğer kullanıcıların görmesi için referans olarak kullanacağım.
Mitch

2

İşte acı bir gerçek: Linux için Office çözümleri tamamen başarısız! Uzun yıllardır tam zamanlı bir GNU / Linux kullanıcısı oldum ve eski Open-Office'ten sonraki Libre-Office'e, Abi-Word'e, vb. Farklı ofis çözümleri aradım ve denedim. Onlar ... hepsi ofis işimi yapmama yardım edemedi. Latin olmayan dillere gelince daha da kötüye gider (Farsça, Arapça vb. Sağdan sola diller). Kullanıcı, işini yapmak için bu yazılımla mücadele etmek zorundadır! Ve Microsoft Office uyumluluğu sadece orada değil. Ne kadar uğraştığımın saatlerce ve saatlerce konuşabiliyorum ve hepsi beni başarısızlığa uğrattı, ama bu sorunun konusu değil.

Ayrıca WINE kullanarak Microsoft Office'i kurmayı ve çalıştırmayı da denedim ve biraz başarılı oldum, ancak iyi sonuç vermedi ve ofis dosyalarımı açmaya çalıştığımda çoğunlukla çöktü.

LaTeX iyi, ancak bir ofis çözümü değil. LaTeX, tip ayarı içindir ve daha çok bir profesyonelin aracı gibidir ve forma veya sunum yoktur.

Öyleyse çözüm nedir?

Bu bir komut satırı çözümü değil. Tüm bu yıllarda benim karşılaştığım tek çözüm, GNU / Linux işletim sistemimde kalmamı ve ofis işleri yapmamı sağlamak için sanal bir makinede (VirtualBox gibi) en az bir Microsoft Windows kurulumu kullanmak ve kurmak bir Microsoft Office takımı.

görüntü tanımını buraya girin

Kulağa hoş gelmeyebilir, ancak kusursuz çalışan ve değerli zamanımda kötü ofis çözümleriyle savaşmamı engelleyen tek çözüm bu. İlk başta, bunun iyi bir çözüm olmadığını düşündüm, ancak diğerleriyle başarısız olduktan ve bu VM işini 2 yıldan fazla yaptıktan sonra, gerçekten çok mutluyum. :)

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

NOT-1: Microsoft ürünlerini tanıtmıyorum! Sadece problemi çözmeye ve hayatı sürdürmeye yardım etmeye çalışıyorum.

NOT-2: Yukarıda vurgulandığı gibi, bu bir komut satırı çözümü değildir. Öyleyse cevap neden? Çünkü bu bir TEST EDİLDİ ve İYİ ÇALIŞIYOR seçeneği! ÇALIŞTIRIYOR komut satırı çözümü yoksa (ki bu durumdan şüpheliyim), ALTERNATİF bir seçeneğe sahip olmak, NO seçeneklerinden daha iyidir.


1
Neden sadece winesanal makine yerine MS kelimesini kullanıyorsunuz ?
totti

1
Bahsettiğim gibi, MS-Office kullanarak yükleme ve kullanma deneyimim WINEiyi gitmedi. Program Windows'ta olduğu gibi çalışmadı (yanlış davranış gösterdi) ve ayrıca çok çöktü!
Seyed Muhammed

3
Hayır Ohe downvoted etti henüz , ama soru açıkça bir sorar komut satırı çözümü. Bu MS nedeniyle işe yaramaz değil, işe yaramaz çünkü soruyu tamamen görmezden geliyor.
djeikyb

3
Seyed, lütfen OP'nin açıkça Ubuntu sunucusunda çalışacak bir komut satırı çözümü istediğini unutmayın (ki bu muhtemelen bir GUI'ye sahip değildir!). Cevabınız fena değil ama bu durumda sadece ilgili değil.
Ocak'ta

2
@SepticalJule Komik. Bir komut satırı çözümüne açıkça bir ödül koyuyorsun. Ardından, sorunun cevabı bile olmayan bir cevap seçersiniz. Diğer cevapları bile okudun mu? Bu ve benimki dahil mi?
don.joey


0

Calibre'yi Software Center veya Synaptic'ten yükleyin ve varsayılan çıktıyı PDF olarak ayarlayın.

Bir kabuk isteminden, gerçekleştirmek

ebook-convert dummyfilename .docx .pdf -h


Bu bir şekilde metni keser.
don.joey

İle çarpışma ValueError: No plugin to handle input format: docx. Google bu konuda yardımcı olmadı, ben de bir hata bildireyim.
Şüpheci Jule
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.