11

Word docx ドキュメントを含むフォームのアップロードを受け取りました。すべての解析が正常に完了しました。次に、その Word 文書を Web 上に表示する必要があります。

現時点で私が直面している問題は、EMF ファイル (PIL ライブラリが WMF 形式として認識する) が埋め込まれており、それらを Web 上で表示できるもの (任意に選択された PNG) に変換する方法がわからないことです。

コードはやや単純です。

im = PIL.Image.open(StringIO.StringIO(data))
fmt = im.format
if (fmt == 'WMF'):
  fmt = 'PNG'
  出力 = StringIO.StringIO()
  im.save(出力、フォーマット=fmt)
  データ = 出力.getvalue()
  output.close()
return '''<img src="data:image/{0};base64,{1}" />'''.format(fmt, base64.encodestring(data))

私が得るエラーは次のとおりです。

IOError: cannot find loader for this WMF file

これらの Word 文書は、Web から画像をカット アンド ペーストしたり、ファイルから挿入したりする平均的なユーザーからのものです。

Linux システムで解決策はありますか?

ありがとう。

編集:

私の弁護のために、そのドキュメントをGoogleドライブにアップロードしようとしましたが、画像も表示されません。多分簡単な解決策はありませんか?

4

4 に答える 4

4

このような変換には、Wand パッケージを使用する方が簡単であることがわかりました。以前の提案を試してみましたが成功しませんでした。だからここに私がしたことがあります:(ところで、私はすべての「.wmf」ファイルをpdfに変換したかった)

import os

from wand.image import Image as wima

folder='C:/Users/PythonLover/Pictures/pics'

for oldfilename in os.listdir(folder):

    if oldfilename.endswith(".wmf"):

        with wima(filename=folder+'/'+oldfilename) as img:

            newfilename = oldfilename.split('.')[0]+'.pdf'

            newfilename = folder+'/'+newfilename

            img.format = 'pdf'

            img.save(filename=newfilename)
于 2017-09-05T15:48:05.243 に答える
2

何をしようとしているのかが問題になる理由を理解するには、何を扱っているのかを理解する必要があります。WMFファイル(または最新のEMFおよびEMF +形式)では、記述されているイメージをレンダリングするためにWindowsGDIが必要です。したがって、GDI APIを複製する必要があるため、この形式をWindowsの外部で変換する場合の簡単な解決策はありません。

1つの解決策は、OpenOffice/LibreOfficeのUNOバインディングに依存するunoconvツールを使用することです。2番目の解決策は、 pyemfモジュールを使用して入力をデコードし、次に2番目のツール(ユーザーが実行する)がそれをレンダリングします。

于 2013-01-03T01:58:27.343 に答える
1

libwmf画像をSVGpyrsvgに変換してから、PNGに変換するために使用できます(別の質問で説明されています)

プロジェクトのWebサイトが見つかりませんが、Debian(およびUbuntu)にはユーティリティを含むlibwmfパッケージがあります。libwmf-binwmf2svg

于 2012-12-31T20:45:48.213 に答える