docxをPDFに変換


41

コマンドラインを使用してUbuntuサーバーでdocxファイルをpdfに変換しようとしていますが、これまで試したコンバーターはどれもWord 2007/2010/2013ファイルを正しく変換していないようです。

どうやらオンラインコンバーターは問題なくそれを管理できますが、ファイルには機密データが含まれているため、Webサービスはオプションではありません。テストには、いくつかの重要な要素(式、ベクトルグラフィック、画像、リストなど)が含まれているため、このWord 2007ファイルを使用します。私は次のツールをテストしました(一部この投稿から):

lowriter (LibreOffice Writer)-誤った出力(円は最初のページではなく最後のページにあるはずです)

ここに画像の説明を入力してください

unoconv-独自のコンバーターを使用しないため、LibreOfficeと同じです。最初にodtに変換してからpdfに変換すると、ファイルが完全に乱れます。

abiword --to=pdf filename.doc -不正確で不完全(多くの要素が欠落しています):

ここに画像の説明を入力してください

OpenOffice Writer-abiwordと同じ結果

wvPDF -次のエラーメッセージでクラッシュします。

〜$ wvPDF 2007_Office_DocEncryption.docx test.pdf

現在のディレクトリ:/ home / webmt / dev / test /

ラテックスの実行に問題があります。

test.logでエラーを確認します

続行しています...

dviへの変換に失敗しました

LinuxでdocxファイルをPDFに正しく変換する方法はありますか?また、既に説明したプログラムのいずれかを使用している人に有効であることがわかっていれば、それも役立ちます。SEから許可があり次第、賞金を開始します。

PS私はUbuntuサーバー12.04を使用しています


結論

私に関しては、今のところ、Ubuntuで新しいMS Word形式とそのすべての要素を処理し、docxファイルの1対1のコピーを作成する信頼できるツールはないと結論付けなければなりませんでした。テストしたどのツールも、サンプルファイルを適切に変換できませんでした。さまざまな種類のドキュメントバージョン/コンテンツに直面し、出力品質が最優先事項の1つであるため、Linuxに接続されたWindowsサーバーでWordのVBマクロを使用して変換を実行することになります。

最良の結果が得られる投稿を承認済みの回答として設定します。ただし、賞金は絶対に正しい変換を伴うソリューションを目的としていました。皆さん、ありがとう。


3
ラテックスを試してみましたか?
ブライアム

@ScepticalJule、はい、最後に問題があります。最初のページを見ました。

1
@Braiamラテックスで変換するためのリンクをドロップしてもらえますか?
懐疑的なジュール


2
@ScepticalJule Braiamの意味するところは、ドキュメントをすぐにlatexで書くことです。docxからlatexへの変換は、docxからpdfへの変換よりもはるかに苦痛です。docxからdocに変換してから、docからpdfに変換することもできます。ただし、そのためにはLOに依存しないツールを見つける必要があります。他の方法で支援できるかどうか、そして私の答えがあなたを助けたかどうかを教えてください。
don.joey

回答:


58

この答えはすべてのテストに合格しますが、フローチャートはテスト文書にあります。

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

これが他の方法がこれまで示唆しているよりも優れているのはなぜですか?

これまでに提案された他のメソッド(特にoowriterおよびebook-convert)をテストしましたが、このメソッドよりも少ないテストに合格しています。このebook-convertメソッドは、ドキュメントから余白とテキストの一部を取り除きます。

この方法は、rainbowpdfのようなプロフェッショナルなコンバーターよりも優れた結果をもたらします。

また、htmlに変換しようとしましたが、円の中に正方形が描かれた図面とフローチャートは正しくありません。

フローチャートテストが失敗するのはなぜですか?

libreofficeとunoconvには、.docxファイル内のフローチャートを正しくレンダリングする際にいくつかの問題があるようです。これはおそらく、Microsoft Officeでスマートアートを使用して作成されたためです。それは問題。これもこのスレッドで説明されているバグです。あなたが見ることができるように、テキストと視覚情報は上記の方法から生じるpdfにあります(しかし、私はテキストを選択しなければなりませんでした)。

期待どおりに完全に表示されないフローチャート。

たとえば、フォントの色が適切に読み取られず、一部の行が長すぎます。スマートアートを正しく表示できるLinuxソリューションを知りません。:(

これはprint、このページに掲載されているすべてのソリューションが満足できない理由でもあります。

要するに

要するに、あなたがしていることは本当に難しく、現在あなたを完全に満足させる解決策はありません。docx2pdf変換のアキレス腱はスマートアートです。それなしで生活できるか、スマートアートを見つけて何らかの形で画像に変換する方法を見つけることができれば、目標を達成できます。

オプション1.ユーザーに問題を処理させる

これは非常に洗練されたソリューションです。コンテンツ作成者は、オフィスのヘルプページで説明されているように、スマートアートをjpgとして保存できます。したがって、サーバー上で変換が可能になります。

オプション2.問題を回避する

多くの場合、フローチャートが非常によく似ていて、開発者の能力に応じて、スマートアートを個別に変換することができます。ドキュメントの.docxクラスターからdrawing1.xmlファイルを抽出し、自然言語処理とクレイジーハックを使用してスマートアートを再構築できます。たとえば、このタイプの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>

または最小限のソリューションとして、あなたは、少なくとも抽出(テキストを<a:t>簡単な方法で?)ファイルから、それに保存します。または、pdfのフローチャートがすべて同じ場合、xml自体のテキストの色と行の長さを変更するスクリプトを作成できます。その後、実行することができdoc2pdf、本質的にすべての正しい情報を持っているファイルがありますが、おそらくフォーマットはありません。フローチャートの場合、おそらくフォーマットの一部も含める必要があります。これは、フォーマットが情報の一部であるためです。

オプション3.サードパーティのサービスを使用する

過去数日間、さらに調査を行ったところ、完全に変換を行うサービスzamzarが見つかりました。Zamzarでは、docxファイルをアップロードして、リンクをメールで送信できます。また、任意のファイルをpdf@zamzar.comに送信し、変換したファイルを受信トレイに戻すことができる(有料?)サービスもあります。ファイルを自動的に送信し、電子メールから解析するシステムを簡単に構築できます。これはそれほど多くの作業ではなく、最終的な結果が最高です。

ノート

  • 同じことを行う他のサービスがある場合は、お気軽に編集してください。
  • 私は彼らがAPIを持っているかどうかを尋ねるためにzamzarサポートを郵送しました。それはさらに簡単です。
  • .NETとJavaが役に立つかもしれませんか?または、この非常に関連するSO投稿のように docx4java です。
  • 別のオプションは、日付が古く、libreofficeではなくopenofficeに依存しているodf-converter調べることです。
  • これで、java jodconverterがフローチャート変換に失敗することも確認できます。

このページで提案されているさまざまな方法を実際にテストするのに時間がかかりました。実際のテストでコメントをバックアップしてください。


1
zamzarからのニュースを受け取りました:「現在、今後数か月以内にベータ版でローンチしたいAPIがあります。これに興味があれば、ベータトライアルに追加してもらえますか?」彼らはまた、変換システムは社内で開発したものだと述べました。
don.joey

@jasonplutextあなたの編集は役に立たなかったというレビューアーに同意します。plutextの著者として(私は推測しますか?)所属を明記する免責事項とともに、独自の回答を追加することをお勧めします。ありがとう。
-don.joey

過去数年のアップデートはありますか?
ベッコ

@beckoフォローしていません。たぶん他の誰かに報奨金を設定しますか?
-don.joey

将来の注意:の最近のバージョンでの適切な使用法lowriterは今 lowriter --convert-to pdf input_file.docxです。使用--pt pdfはサイレントに失敗します。
ACK_stoverflow

6

これは、きちんと機能するコマンドラインソリューションですが、独自のソフトウェアを使用します。

基本的な問題は、Microsoft Wordの形式がMicrosoft Wordだけで完全に理解できることだと思います(バージョン間で違いがあります-新しいバージョンでは誤ってフォーマットされた過去のWordファイルがあります)。他のすべての解決策は近似およびハッキングであるため、ファイルに応じて機能するかどうかは異なります。

したがって、Microsoft Wordインストールで.docxファイルを処理する必要があることを確認するために(そして、はい、それは彼らのオプションであり、公正だと思います。Wordを使用したくない場合は、使用しないでください---と一緒に行きます私の仕事のためのLaTeXですが、周りの世界を納得させるのは難しいです...)。

私はLinuxデスクトップでMicrosoft Officeを実行するためにCrossoverをずっと使っています(1)。多分それはワインでも動作します---試したことはありません。

この構成を使用して変換を行います。

1)クロスオーバーがインストールされています

2)CrossoverにMicrosoft Officeのバージョンがインストールされています

3)Microsoft Wordで、「バックグラウンド印刷」を無効にします

4)cups-pdfプリンターをインストールし、デフォルトのプリンターとして選択しました。

5)変換を行うには、次のコマンドを実行します(ヒントはこちら):

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

6)変換されたファイルが~/PDF/ディレクトリに表示されます。

文書はほぼ完璧に出てきます(クロスオーバーで実行したときにOffice Word 2007に表示される回答#2にいくつかの不整合があります--- Windowsバージョンに関連しているかどうかはわかりません)。

pagew 1-2

3-4ページ

さて、問題はグラフィックワードインターフェイスがポップアップすることです---「ヘッドレス」にする方法がわかりません。Wordのコマンドラインオプションは役に立ちませんでした...

(1)Codeveawersとはまったく関係ありません---ただの幸せなユーザーです。


4

私も過去にこの問題を抱えていましたが、最近使用する必要がなかったので、それがまだ私に影響を与えているかどうかはわかりません。

質問への回答に関して:

この質問:.docまたは.docxを.pdfにバッチ変換する方法は、コメントでの変換lowriterが失敗する理由を示しています:

コマンドラインから「スペース」文字を使用する場合は注意してください...スペース文字に到達したら、単に「タブ」を押してください;)-ピット12年11月16日13:11

この質問の答えも役立つかもしれません:

ODTファイルをPDFに変換するにはどうすればよいですか?

実行しlibreoffice --headless --convert-to pdf *.odtます。コマンドのman libreoffice理解や調整が必要な場合は、コマンドを使用してlibreofficeの詳細情報を取得できます。

ただし、このバグのように、LibreOfficeをその時点で開くことはできません:https : //bugs.freedesktop.org/show_bug.cgi?id=37531


この質問は、スーパーユーザーにあるものの、Ubuntuにも関連していますhttps : //superuser.com/questions/156189/how-to-convert-word-doc-to-pdf-in-linux

最初の答えには2つのオプションがあります。1つはCUPSを使用してPDFプリンターを作成し、もう1つはLaTexを使用しますが、LaTexは失敗したと言いました。

CUPS PDF経由でPDFに変換する場合は、を実行sudo apt-get install cups-pdfoowriter -pt pdf your_word_file.doc(x)ます。これは、oowriterの問題に役立つ可能性があります。

これはおそらく、LibreOffice / OpenOffice / AbiWordに関連しているため、ほとんどのツールがODTを使用しているときに、DOC / DOCXからPDFに変換しようとしているという事実に関する問題です。したがって、MicrosoftのDOCX形式からの変換またはODTへの変換に失敗します。

.docx wからの変換にはいくつかのバグがあります。ワードアート(バージョンが含まれています):

これは、.docおよびやや.docxからの変換に関するLibreOfficeフォーラムからのものです:http : //en.libreofficeforum.org/node/5096 2013年1月からですので、多少適用されるはずです。

これ以外にも、私は本当に知りません。あなたの問題を解決することを願っています!


申し訳ありませんが、推奨されるツールはどれもきれいな変換を行うことができません。
懐疑的なジュール

2

Libreofficeがインストールされている場合は、それを使用して変換を試みることができます。キーボードのCtrl+ Alt+ Tを押すだけで、ターミナルが開きます。開いたら、以下のコマンドを実行します:

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

別のオプションはCups PDFをインストールすることです。

これを行うには、キーボードのCtrl+ Alt+ Tを押してターミナルを開きます。開いたら、以下のコマンドを実行します:

sudo apt-get install cups-pdf

次に、新しいプリンターを作成し、PDFファイルプリンターとして設定し、名前がわかっている限り、任意の名前を付けてから実行します。

oowriter -pt pdf your_word_file.docx

PDFファイルはにあり~/PDFます。


1
それらで成功しませんでした。
懐疑的なジュール14年

これで理由がわかるかもしれません。
懐疑的なジュール14年

あなたの反応に感謝します、それは非常に理にかなっていますが、紙に印刷するのが好きなので、印刷がうまくいかなかったことに驚いています... :)
ミッチ

重要な問題は、LibreOfficeがドキュメントを正しく開いて表示することさえできないことです。その結果、出力も正しくありません。Linuxで動作しましたか?
懐疑的なジュール14年

知っておくといいです。私は基本的なドキュメントだけにオフィスを使用しますが、それ以上複雑なものは必要ありませんが、使用する場合は確認し、これを参照します。すばらしい質問をありがとう。今後の参考のためにお気に入りとして追加します。この回答と、他のユーザーが参照できるようにコメントとしてコメントを保存します。
ミッチ

2

ここに、真実があります:Linux向けのOfficeソリューションは完全な失敗です!私は長年GNU / Linuxユーザーであり、古いOpen-Officeから後のLibre-Office、Abi-Wordなど、さまざまなオフィスソリューションを常に検索して試してきました。すべてが私のオフィスワークを手伝うことに失敗しました。ラテン語以外の言語(ペルシャ語、アラビア語などの右から左に記述する言語)の場合はさらに悪化します。ユーザーは自分の仕事を終わらせるためにこれらのソフトウェアと戦わなければなりません!また、Microsoft Officeとの互換性はありません。私は何時間も何回試したかを話すことができ、それらはすべて私を失敗させましたが、これはこの質問のポイントではありません。

また、WINEを使用してMicrosoft Officeをインストールして実行しようとしましたが、何とか成功しましたが、うまく機能せず、Officeファイルを開こうとするとほとんどクラッシュしました。

LaTeXは問題ありませんが、オフィスソリューションではありません。LaTeXはタイプ設定用であり、プロのツールのようなもので、スプレッドシートもプレゼンテーションもありません。

それで解決策は何ですか?

これはコマンドラインソリューションではありません。GNU / Linux OSの内部に入れて、オフィスの仕事を終わらせるために、ここ数年で思いついた唯一の解決策は、仮想マシン(VirtualBoxなど)で最小限のMicrosoft Windowsインストールを使用してインストールすることですMicrosoft Officeスーツ。

ここに画像の説明を入力してください

それはきれいに聞こえないかもしれませんが、完璧に機能し、貴重な時間に悪いオフィスソリューションと戦うことから私を救う唯一のソリューションです。最初は、これは良い解決策ではないと思っていましたが、他のすべてで失敗し、2年以上このVMの操作を行った後、本当に満足しています :)

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

注-1:マイクロソフト製品を宣伝していません!問題を解決し、人生を前進させようとするだけです。

注-2:上記で強調したように、これはコマンドラインソリューションではありません。なぜ答えを投稿するのですか?それは、テスト済みでよく機能するオプションだからです!WORKINGコマンドラインソリューションが利用できない場合(これは非常に疑わしい)、オプションを使用するよりも、オプションを使用する方が適切です。


1
wine仮想マシンの代わりにMS wordを使用するのはなぜですか?
トッティ14年

1
前述したように、MS-Officeのインストールと使用に関する私の経験WINEはうまくいきませんでした。このプログラムは、Windowsでの動作とは異なり(不正な動作を示した)、多くのクラッシュもしました!
セイドモハマド14年

3
まだ投票していませんが、質問ではコマンドラインソリューションを明示的に求めています。これはMSのせいで役に立たないわけではありません。質問を完全に無視するので役に立たないのです。
djeikyb 14年

3
Seyed、OPが明示的に彼のUbuntuサーバーで動作するコマンドラインソリューションを要求していることに注意してください(おそらくGUIさえ持っていません!)。あなたの答えは悪くありませんが、この場合は関係ありません。
グルタニメート

2
@ScepticalJuleばかげています。コマンドラインソリューションに明示的に賞金をかけます。次に、質問に対する回答ではない回答を選択します。他の答えも勉強しましたか。これと私のものを含めますか?
don.joey 14年

1

以下に、FF Multi Converterが機能する かどうか、Kingsoft Officeを試すことができるアプリケーションをいくつか紹介します。


FF Multi Converterをインストールし、コマンドを実行しました...何も起こりませんでした。Kingsoftには優れたGUIがありますが、ファイルを正しく開いたり表示したりできませんでした(必要なフォントをインストールした後でも式が見つかりませんでした。円の中の文字もありませんでした)。
懐疑的なジュール14年

0

Software CenterまたはSynapticからCalibreをインストールし、デフォルトの出力をPDFに設定します。

シェルプロンプトから、実行します

ebook-convert dummyfilename .docx .pdf -h


これは何とかしてテキストをカットします。
don.joey

でクラッシュしValueError: No plugin to handle input format: docxます。グーグルはこれを助けなかったので、バグを報告します。
懐疑的なジュール14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.