내 노트를 Evernote로 옮기고 있어요. 이를 위해서는 .doc/.docx 파일을 rtf로 변환해야 합니다. 그 이유는 rtf를 Evernote로 가져오는 스크립트가 있기 때문입니다. 그러나 내 .doc/.docx 파일 중 일부에는 이미지가 포함되어 있습니다.
이미지를 모두 보지 않고도 어떤 .doc/.docx 파일에 이미지가 포함되어 있는지 확인할 수 있는 방법이 있나요? 나는 수천을 가지고 있습니다. 이렇게 하면 이미지가 있는 몇 개만 열고 전체 콘텐츠를 Evernote에 바로 복사/붙여넣을 수 있습니다.
OS X 10.6.8을 사용하고 있다고 해야 할까요?
답변1
.doc 파일은 어디에 이미지를 저장하나요?
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바이트인 것을 발견했습니다(일부는 약간 더 큼). 문서 내부에 이미지가 있는지 확인하기 위해 이를 활용해 볼 수 있습니다. 8000바이트라고 가정해 보겠습니다. 실제 이미지는 확실히 몇 KB 이상을 가지기 때문입니다.
.docx 파일은 어떻습니까?
Office 2007 형식( docx
)을 사용하면 훨씬 더 쉽습니다. 이는 실제 압축 파일이며 모든 종류의 내장 미디어(이미지, 비디오)가 포함된 모든 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
내장된 미디어가 있는 목록이 표시됩니다.
증거
이것이 작동한다는 것을 증명하기 위해 네 개의 파일을 만들었습니다. 하나는 이미지가 있고 하나는 이미지가 없습니다 – as doc
및 docx
:
그런 다음 스크립트를 실행합니다.
charon:test werner$ ruby docx-images.rb
images.docx
images.doc
분명히 해당 폴더의 실제 이미지를 확인하도록 스크립트를 개선할 수 있지만 media
파일에 실제로 미디어가 포함되어 있지 않으면 존재하지 않을 가능성이 높습니다. "6060" 바이트 검사도 마찬가지입니다. 해킹이지만 나에게는 효과가 있습니다.
물론 스크립트는 unzip
해당 시스템의 구현에 따라 다르지만 OS X 버전에서는 작동합니다.
답변2
을 위한윈도우:
- .docx의 이름을 .zip으로 바꾸고 zip 파일을 열고 이미지를 추출합니다(가장 좋은 방법!).
- 그런 다음 이미지 아래에서 이미지를 찾으십시오
\zipfile\word\media
.