Word Doc 또는 Docx 파일을 텍스트 파일로 변환 하시겠습니까?
-
12-09-2019 - |
문제
전환하는 방법이 필요합니다 .doc
또는 .docx
확장 .txt
아무것도 설치하지 않고. 나는 또한 이것을 분명히하기 위해 단어를 수동으로 열어야 할 필요가 없습니다. 자동으로 실행되는 한.
Perl 또는 VBA가 트릭을 수행 할 수 있다고 생각했지만 온라인에서는 아무것도 찾을 수 없습니다.
제안이 있습니까?
해결책
Microsoft Office 응용 프로그램에 대한 훌륭한 정보 소스는 다음과 같습니다. 객체 브라우저. 당신은 그것을 통해 액세스 할 수 있습니다 Tools
→ Macro
→ Visual Basic Editor
. 편집자에 들어가면 누르십시오 F2 Microsoft Office 응용 프로그램에서 제공하는 인터페이스, 메소드 및 속성을 찾아보십시오.
다음은 사용하는 예입니다 Win32 :: 올레:
#!/usr/bin/perl
use strict;
use warnings;
use File::Spec::Functions qw( catfile );
use Win32::OLE;
use Win32::OLE::Const 'Microsoft Word';
$Win32::OLE::Warn = 3;
my $word = get_word();
$word->{Visible} = 0;
my $doc = $word->{Documents}->Open(catfile $ENV{TEMP}, 'test.docx');
$doc->SaveAs(
catfile($ENV{TEMP}, 'test.txt'),
wdFormatTextLineBreaks
);
$doc->Close(0);
sub get_word {
my $word;
eval {
$word = Win32::OLE->GetActiveObject('Word.Application');
};
die "$@\n" if $@;
unless(defined $word) {
$word = Win32::OLE->new('Word.Application', sub { $_[0]->Quit })
or die "Oops, cannot start Word: ",
Win32::OLE->LastError, "\n";
}
return $word;
}
__END__
다른 팁
DOCX를위한 간단한 Perl 전용 솔루션 :
사용 아카이브 :: zip 얻기 위해
word/document.xml
귀하의 파일docx
파일. (DOCX는 단지 지퍼 아카이브입니다.)사용 xml :: libxml 그것을 구문 분석합니다.
그런 다음 사용하십시오 xml :: libxslt 텍스트 또는 HTML 형식으로 변환합니다. 좋은 것을 찾기 위해 웹을 설치하십시오 docx2txt.xsl 파일 :)
건배 !
제이.
.doc의 경우 Linux Command Line 도구로 약간의 성공을 거두었습니다. 안티 워드. 그것은 .doc에서 텍스트를 매우 빠르게 추출하여 들여 쓰기를 잘 렌더링합니다. 그런 다음 Bash의 텍스트 파일로 파이프 할 수 있습니다.
.docx의 경우 다른 사용자가 언급 한 것처럼 Ooxml SDK를 사용했습니다. OOXML 파일로 향한 OOXML과 쉽게 작업 할 수 있도록 .NET 라이브러리 일뿐입니다. 텍스트에만 관심이있는 경우 폐기하고 싶은 메타 데이터가 많이 있습니다. 다른 사람들은 이미 내가 보는 코드를 작성했습니다. DocxtOtext.
ASSOCE.WORDS는 내가 찾은 지원이 큰 매우 간단한 API를 가지고 있습니다.
.docx를 풀어서 작동하는 CommandLineFu.com의 BASH 명령도 있습니다.
unzip -p some.docx word/document.xml | sed -e 's/<[^>]\{1,\}>//g; s/[^[:print:]]\{1,\}//g'
강력하게 추천합니다 Asposewords Java 또는 .NET를 수행 할 수있는 경우. 모든 주요 텍스트 파일 유형간에 단어를 설치하지 않고 변환 할 수 있습니다.
Unix의 맛이 설치된 경우 'Strings'유틸리티를 사용하여 문서에서 읽을 수있는 모든 문자열을 찾아 추출 할 수 있습니다. 찾고있는 텍스트 전후에 약간의 혼란이 있지만 결과는 읽을 수 있습니다.
사용할 수도 있습니다 오픈 오피스 기타 문서, 도면, SpreadHseet 등을 수행하려면 Windows 및 *Nix 플랫폼 모두에서 변환.
프로그래밍 방식 (Windows에서 COM과 유사한 방식으로)을 통해 OpenOffice에 액세스 할 수 있습니다. 우노 Perl을 통해 UNO 바인딩이 존재하는 다양한 언어에서 OpenOffice :: Uno 기준 치수.
에 OpenOffice :: UNO 페이지 또한 문서를 열어주는 샘플 Perl Scriptlet도 찾을 수 있습니다. txt
사용함으로써 document.storeToURL()
방법 - 참조 파이썬 예제 Perl 요구에 쉽게 적응할 수 있습니다.
.doc은 사용합니다 WordProcessingml 그리고 .docx의 XML 형식 문서의 실제 텍스트를 검색하기 위해 XML을 구문 분석 할 수 있습니다. 읽은 텍스트가 포함 된 태그를 파악하려면 사양을 읽어야합니다.
Sinan ünür의 방법은 잘 작동합니다.
그러나 변환 한 파일에 약간의 충돌이 발생했습니다.
또 다른 방법은 Win32 :: Ole 및 Win32 :: Clipboard를 사용하는 것입니다.
- 단어 문서를 엽니 다
- 모든 텍스트를 선택하십시오
- 클립 보드에 복사하십시오
- 클립 보드 내용을 txt 파일로 인쇄하십시오
- 클립 보드를 비우고 Word 문서를 닫습니다
Sigvald Refsu가 제공 한 스크립트를 기반으로합니다 http://computer-programming-forum.com/53-perl/c44063de8613483b.htm, 나는 다음 스크립트를 생각해 냈습니다.
참고 : .docx 파일과 동일한베이스 이름으로 txt 파일을 저장하기로 결정했지만 동일한 폴더에서 쉽게 변경할 수 있습니다.
###########################################
use strict;
use File::Spec::Functions qw( catfile );
use FindBin '$Bin';
use Win32::OLE qw(in with);
use Win32::OLE::Const 'Microsoft Word';
use Win32::Clipboard;
my $monitor_word=0; #set 1 to watch MS Word being opened and closed
sub docx2txt {
##Note: the path shall be in the form "C:\dir\ with\ space\file.docx";
my $docx_file=shift;
#MS Word object
my $Word = Win32::OLE->new('Word.Application', 'Quit') or die "Couldn't run Word";
#Monitor what happens in MS Word
$Word->{Visible} = 1 if $monitor_word;
#Open file
my $Doc = $Word->Documents->Open($docx_file);
with ($Doc, ShowRevisions => 0); #Turn of revision marks
#Select the complete document
$Doc->Select();
my $Range = $Word->Selection();
with ($Range, ExtendMode => 1);
$Range->SelectAll();
#Copy selection to clipboard
$Range->Copy();
#Create txt file
my $txt_file=$docx_file;
$txt_file =~ s/\.docx$/.txt/;
open(TextFile,">$txt_file") or die "Error while trying to write in $txt_file (!$)";
printf TextFile ("%s\n", Win32::Clipboard::Get());
close TextFile;
#Empty the Clipboard (to prevent warning about "huge amount of data in clipboard")
Win32::Clipboard::Set("");
#Close Word file without saving
$Doc->Close({SaveChanges => wdDoNotSaveChanges});
# Disconnect OLE
undef $Word;
}
그것이 당신을 도울 수 있기를 바랍니다.
Word (또는 다른 사무실 신청서)를 시작하고 싶지 않다면 VBA에서는 할 수 없습니다. VB를 의미하더라도 처리를 수행하려면 여전히 (숨겨진) 단어 인스턴스를 시작해야합니다.
아무것도 설치하지 않고 .doc 또는 .docx 확장을 .txt로 변환하는 방법이 필요합니다.
for I in *.doc?; do mv $I `echo $ | sed 's/\.docx?/\.txt'`; done
농담이야.
당신은 사용할 수 있습니다 안티 워드 이전 버전의 Word Documents의 경우 새로운 문서의 XML을 구문 분석하십시오.
와 함께 DocxtEmplater, 당신은 단어의 전체 텍스트를 쉽게 얻을 수 있습니다 (docx만으로 작동).
코드 (node.js)는 다음과 같습니다.
DocxTemplater=require('docxtemplater');
doc=new DocxTemplater().loadFromFile("input.docx");
result=doc.getFullText();
이것은 단지 3 줄의 코드이며 어떤 단어 인스턴스에도 의존하지 않습니다 (모든 일반 JS).