3

Word文書を「フィルターされたHTML」として保存するスクリプトVBSまたはRubyがありますが、エンコードパラメーターは無視されます。HTMLファイルは常にWindows-1252でエンコードされます。Windows7SP1でWord2007SP3を使用しています。

Rubyの例:

require 'win32ole'
word = WIN32OLE.new('Word.Application')
word.visible = false
word_document = word.documents.open('C:\whatever.doc')
word_document.saveas({'FileName' => 'C:\whatever.html', 'FileFormat' => 10, 'Encoding' => 65001})
word_document.close()
word.quit

VBSの例:

Option Explicit
Dim MyWord
Dim MyDoc
Set MyWord = CreateObject("Word.Application")
MyWord.Visible = False
Set MyDoc = MyWord.Documents.Open("C:\whatever.doc")
MyDoc.SaveAs "C:\whatever2.html", 10, , , , , , , , , , 65001
MyDoc.Close
MyWord.Quit
Set MyDoc = Nothing
Set MyWord = Nothing

ドキュメンテーション:

Document.SaveAs: http: //msdn.microsoft.com/en-us/library/bb221597.aspx

msoEncodingの値:http ://msdn.microsoft.com/en-us/library/office/aa432511(v = office.12).aspx

WordにHTMLファイルをUTF-8で保存させる方法についての提案はありますか?

4

3 に答える 3

0

私の知る限り、Wordはこれを行うことができません。

ただし、Rubyスクリプトの最後に次の行を追加することはできます

text_as_utf8 = File.read('C:\whatever.html').encode('UTF-8')
File.open('C:\whatever.html','wb') {|f| f.print text_as_utf8}

古いバージョンのRubyを使用している場合は、を使用する必要がある場合がありますIconv。に特殊文字が含まれている場合は'C:\whatever.html'、無効/未定義の置換オプションを調べてください。

metaまた、HTMLタグの文字セットを更新することもできます。

text_as_utf8.gsub!('charset=windows-1252', 'charset=UTF-8')

ファイルに書き込む前に。

于 2013-01-17T18:59:09.840 に答える
0

私の解決策は、Wordが保存に使用したのと同じ文字セットを使用してHTMLファイルを開くことでした。また、HTMLをクリーンアップするために、ホワイトリストフィルター(サニタイズ)を追加しました。サニタイズも頼りにしているノコギリを使って、さらに掃除をします。

require 'sanitize'

# ... add some code converting a Word file to HTML.

# Post export cleanup.
html_file = File.open(html_file_name, "r:windows-1252:utf-8")
html = '<!DOCTYPE html>' + html_file.read()
html_document = Nokogiri::HTML::Document.parse(html)
Sanitize.new(Sanitize::Config::RESTRICTED).clean_node!(html_document)
html_document.css('html').first['lang'] = 'en-US'
html_document.css('meta[name="Generator"]').first.remove()

# ... add more cleaning up of Words HTML noise.

sanitized_html = html_document.to_html({:encoding => 'utf-8', :indent => 0})
# writing output to (new) file
sanitized_html_file_name = word_file_name.sub(/(.*)\..*$/, '\1.html')
File.open(sanitized_html_file_name, 'w:UTF-8') do |f|
    f.write sanitized_html
end

HTMLサニタイザー:https ://github.com/rgrove/sanitize/

HTMLパーサーと修飾子: http: //nokogiri.org/

Word 2010には、新しいメソッドSaveAs2があります:http://msdn.microsoft.com/en-us/library/ff836084(v = office.14).aspx

Word 2010を持っていないので、SaveAs2をテストしていません。

于 2013-01-18T10:57:25.910 に答える
0

こんにちはBoFrederiksenとkardeiz、

また、「Word 2003(11.8411.8202)SP3」バージョンで、「WordDocument.SaveAsがエンコードを無視する」という問題も発生しました。

幸いなことに、msoEncodingUTF8(つまり65001)をVBAコードで機能させることができました。ただし、最初にWord文書の設定を変更する必要があります。手順は次のとおりです。

1)Wordの[ツール]メニューから[オプション]を選択します。

2)次に、[一般]をクリックします。

3)「Webオプション」ボタンを押します。

4)ポップアップの[Webオプション]ダイアログで、[エンコード]をクリックします。

5)コンボボックスを見つけることができます。これで、エンコードを「GB2312」から「Unicode(UTF-8)」に変更できます。

6)変更を保存して、VBAコードを再実行してみてください。

私の答えがあなたのお役に立てば幸いです。以下は私のコードです。

Public Sub convert2html()
    With ActiveDocument.WebOptions
        .Encoding = msoEncodingUTF8
    End With

    ActiveDocument.SaveAs FileName:=ActiveDocument.Path & "\" & "file_name.html", FileFormat:=wdFormatFilteredHTML, Encoding:=msoEncodingUTF8

End Sub
于 2014-05-23T09:11:18.067 に答える