web-dev-qa-db-ja.com

MSWordに高品質の数字を挿入するための最良の方法

高品質のPDF図を歪ませずにWordに挿入する方法が必要です。

図は主にPythonとMatplotlibによって生成された科学的なグラフです。主な問題は、グラフのテキストラベルが正しくレンダリングされないことです。

PDFをオブジェクトとして挿入し、EPSファイルを画像として挿入できることは知っていますが、これらの図はWordではほとんど表示されません。

したがって、私の現在のワークフローは、Inkscapeを使用して300DPIで図をPNGファイルとしてエクスポートすることです。ただし、図の品質はまだ満足のいくものではなく、DPIを増やしても品質は明らかに向上しません。

高品質のグラフをWordに挿入する良い方法を誰かが知っていますか?

4
Jonny

Word対PDFまたはEpsの果てしない戦い

ラスターイメージを使用すると、定義とサイズの間の妥協点を見つける必要があります。ドキュメントが600DPIで印刷されることがわかっている場合は、その定義で画像をインポートすることを決定できます。しかし、明日、より高精細なプリンタを使用する場合は、最初からやり直す必要があります。 DPIを大きくすると、ドキュメントのサイズが大きくなり、システムにより多くのリソースが必要になります。

ベクター画像で作業できる場合、画像定義に関連する問題は発生しませんが、インストールされているフォントに関連する問題を見つけることができます。たとえば、10億個のデータをプロットする場合は、より大きなファイルを使用できます...

Word内にファイルをインポートする必要がある場合は、次のことができます。

  • ソースに移動します:プロットを生成したスクリプトで、必要なフォーマット(および最終的にはサイズ)を直接置換または追加できます。 matplotlibサイトから読む [ 1 ]ベクターグラフィック形式で保存できるとよいでしょう [ 1b ]

    plt.savefig(pp, format='pdf') 
    plt.savefig(pp, format='png')
    plt.savefig(pp, format='svg')
    

    あるいは

    fig.savefig('test.pdf')
    fig.savefig('test.png')
    
  • imagemagickを使用する [ 2 ] またはInkscape [ 2b ] またはgimp [ 2b ] PDFをpng(または他のラスター形式、tiff、jpg ...)またはsvg(または他のベクターグラフィック形式)に変換します。

    これは、それがPDF withvectorgraphicであるかどうかによって異なります[] 中かどうか。
    最初のケースでは、まれなレンダリングまたはフォントの問題がいくつか見つかりますが、定義の問題はありません。
    後者の場合、最終的な画像の濃度と寸法を選択する必要があります。
    この回答の例をもっと読んでください [ 4 ]
    次のようなものを書き終えます。

    convert file.pdf file.svg                                  # If pdf with vector
    convert -density 600 file.pdf -resize 4961x7016 mypic.png  # With fixed grid
    


PDFファイルが特定の定義(300 DPIなど)のラスターイメージで作成された場合、DPIを400または600に増やすプログラムではあまり成功しません。 ... :-)
経験則として(通常は機能します)、ラスターPDFには文字列/imageがあると想定できます。
たとえば、Linuxでは、grepを実行して、その文字列の出現回数を数えることができます。

grep  -c -i "/image" *pdf
MyRasterPdf.pdf:3    # > 0  if raster pdf
MyVectorPdf.pdf:0    # = 0  if vector pdf

最後に重要なことですが、 LaTex を検討してください。おそらく、GUIで texmaker を使用します。

3
Hastur

Word 2016では、matplotlibグラフィックをインポートするためのワークフローは次のとおりです。

import matplotlib.pyplot as plt

Illustratorで図やテキストを調整できるように編集可能なテキストをエクスポートします。デフォルトでは、matplotlibはAdobe Illustratorが理解できない「タイプ3フォント」をエクスポートするため、タイプ2/TrueTypeフォントをエクスポートする必要があります。

plt.rcParams['pdf.fonttype'] = 42
plt.rcParams['ps.fonttype'] = 42 

図を保存

plt.savefig('my_figure.pdf',bbox_inches='tight',transparent = True)

Illustratorで開き、必要に応じて調整します

画像を.emfとしてエクスポート

My_figure.emfをWordに挿入します

2
Kristin Q

2018年5月の時点で、Office365エディションのMicrosoftWordは、この質問への回答を変更する2つの変更を加えました。

これは、高品質のグラフィックスを処理する最良の方法は、正しいサイズのFigureをMatplotlibで作成し(plt.figure(figsize=(width_in_inches, height_in_inches)を使用)、次にplt.savefig('filename.svg')でそのFigureをエクスポートすることです。このファイルをWordに直接挿入すると、PDFに変換する場合でも正しくレンダリングされます。

このビデオ プロセス全体を示し、フォーマットを比較します。

1
chthonicdaemon