ノートをevernoteに移動します。このために、.doc /.docxファイルをrtfに変換する必要があります。これは、rtfをevernoteにインポートするスクリプトがあるためです。ただし、一部の.doc /.docxファイルには画像が含まれています。
すべてを表示せずに、どの.doc/.docxファイルに画像が含まれているかを特定する方法はありますか?私は何千人もいます。このようにして、画像のあるいくつかを開いて、コンテンツ全体をコピーしてEvernoteに直接貼り付けることができます。
私はOSX10.6.8を使用していると言うべきです。
Word doc
ファイルは実際に圧縮されてから、コンテナ形式になります。メディアは、このコンパイル済みファイル形式のどこかに、おそらくdoc
形式のヘッダーの直後に保存されます。画像データの後に、実際のドキュメントがZip互換フォルダとしてあります。
したがって、doc
ファイルを解凍しようとすると、最初に過剰なバイト数が発生します。これらはあなたの画像(およびフォーマットヘッダー)です。これで、ファイルをunzip
して、超過バイト数を確認することができます。
charon:test werner$ unzip -c images.doc > /dev/null
warning [images.doc]: 47166 extra bytes at beginning or within zipfile
charon:test werner$ unzip -c noimages.doc > /dev/null
warning [noimages2.doc]: 6060 extra bytes at beginning or within zipfile
テストの結果、「プレーンテキスト」のWord文書のヘッダーが6060バイト大きいことがわかりました(ただし、少し大きいものもあります)。これを利用して、ドキュメント内に画像があるかどうかを判断できます。実際の画像には間違いなく数KB以上あるため、8000バイトとしましょう。
Office 2007形式(docx
)を使用すると、これははるかに簡単です。これらは実際のzipファイルであり、あらゆる種類の埋め込みメディア(画像、ビデオ)を含むWordファイルには、file.docx/Word/media
ディレクトリが含まれます。したがって、docx
ファイルを解凍し、そのディレクトリが存在するかどうかを確認する必要があります。
新しい空のファイルを作成し、それをdocx-images.rb
と呼び、次のコンテンツを貼り付けます。
#!/usr/bin/env Ruby
require 'open3'
TEMPDIR = "/tmp/Word/"
# check for docx files
Dir.glob("**/*.docx").each do |file|
system("rm -rf '#{TEMPDIR}'")
system("unzip '#{file}' -d #{TEMPDIR} > /dev/null")
if File.directory?("#{TEMPDIR}/Word/media/")
puts file
end
end
# check for doc files
Dir.glob("**/*.doc").each do |file|
stdin, stdout, stderr = Open3.popen3("unzip -c '#{file}' > /dev/null")
info = stderr.readlines[0]
info = info.gsub(" extra bytes at beginning or within zipfile", "").gsub(/warning\s\[.*\]:\s+/, "")
if info.to_i > 8000 # assume a little more than usual header size
puts file
end
end
どこか、できればdocx
ファイルの検索を開始するフォルダー、おそらくDocuments
フォルダーに保存します。
ここで、Terminal.appを開き、cd ~/Documents
を使用してそこに移動します。
Ruby docx-images.rb
と入力すると、Documents
フォルダーでdocx
ファイルとdoc
ファイルが再帰的にスキャンされます。前者を/tmp/Word
に解凍し、埋め込みメディアが含まれているかどうかを確認します。後者は/dev/null
に解凍されるだけなので、痕跡は残りません。
メディアが埋め込まれているもののリストが表示されます。
これが機能することを証明するために、4つのファイルを作成しました。 1つは画像あり、もう1つは画像なし– doc
とdocx
の両方:
次に、スクリプトを実行します。
charon:test werner$ Ruby docx-images.rb
images.docx
images.doc
明らかに、そのmedia
フォルダー内の実際の画像をチェックするようにスクリプトを改善することはできますが、ファイルに実際にメディアが含まれていない限り、スクリプトが存在する可能性はほとんどありません。 「6060」バイトのチェックについても同じことが言えます。それはハックですが、私にとってはうまくいきます。
もちろん、スクリプトはそれぞれのシステムでのunzip
の実装に依存しますが、OSXバージョンでは機能します。