.docx 파일을 일반 텍스트로 변환하고 줄 바꿈을 유지하여 소스 문서에 대한 줄 번호 참조를 유지하는 방법 : 방법 및 의미?


9

텍스트 및 파일 유틸리티와 함께 ​​사용하기 위해 MS Word 내용을 일반 텍스트로 내보내고 있습니다. MS 소프트웨어에서 줄 번호 매기기 기능을 사용하도록 설정 한 제약 조건이 있으며 최종 출력에서 ​​줄 번호에 대한 참조 해당 번호와 일치 해야합니다 . "번호 줄"을 입력하십시오 :

여기에 이미지 설명을 입력하십시오 ( 푸, EA )

분명히 Word의 경우 , 이런 종류의 번호 매기기는 줄 바꿈 에서 줄을 끊지 않고 오른쪽 여백 (또는 무언가) 뒤에 줄을 끊습니다 . 와 같은 스크립트 docx2txt는 기본적으로 이것을 설명하지 않으며 줄 바꿈에서 줄을 끊는 것처럼 보입니다. 따라서 grep -n번호 매기기와 함께 사용하면 위의 그림과 같이 라인이 소스 라인 번호 기능과 일치하지 않습니다. 문서에서 내가이 경우에 필요한 방식으로 파일을 변환하기 위해 Perl 스크립트를 편집하는 방법이 명확하지 않습니다.

our $config_newLine = "\n"; # Alternative is "\r\n".
our $config_lineWidth = 80; # Line width, used for short line justification.

나는 대체 \n를 시도 \r\n했지만 그것이 효과가없는 것 같습니다. 그래서 나는 다음 설정 ( v.2013,64pc에서 일반 텍스트 로 저장)을 사용하여 Word 에서 직접 문서를 내보내는 것에 의지했습니다 .

  • 유니 코드 (UTF-8)
  • (CR / LF)를 사용하여 줄 바꿈 + 끝 줄 삽입
  • 문자 대체 허용

이제 정말로 내가 때 사용.txt 파일을 소스 번호 기능과 라인 번호 사이에 완벽하게 일치가 grep -n출력.


  • 특정 구성이 있나요 / I 알아야 처리 docx2txt또는 내 변환 할 수있는 것이다 유사한 명령 줄 유틸리티 .DOCX , 줄 바꿈을 유지하면서 의지하지 않고 일반 텍스트 파일을 워드 나처럼?
  • 줄 바꿈 및 서식과 관련하여 MS Word 문서 (강조 문자를 포함 할 수 있음)를 파일 / 텍스트 유틸리티와 함께 ​​사용하기 위해 일반 텍스트로 내보내는 가장 좋은 방법 은 무엇입니까? CR / LF 삽입과 같이 내보내기 위해 선택한 설정에 부정적인 영향이 있습니까?

견본

제안한대로 샘플을 제공합니다. 이 RAR 아카이브 에서 간단한 단락이 있는 .docx 파일과 위에서 언급 한 옵션이있는 Word를 사용하여 내 보낸 .txt 파일을 묶었습니다 . 후자는 docx2txt소스 파일에서 기본 실행과 비교할 수 있습니다 .


예제 파일을 제공해 주시겠습니까?
cuonglm

Word에서 txt 파일로 저장할 수 없습니까? 형식이 잘못되면 vim 또는 emacs를 사용하여 문제를 해결하는 것이 좋습니다 (패턴 화되어 있기 때문에).
Steven Walton

1
@Steven Walton 감사합니다. Word에서 txt로 내보낼 때 작동합니다. 그러나 나는 Word를 사용하고 싶지 않다는 것이 내 요점입니다. 나는 그것을하기 위해 스크립트에만 의존하기를 바랍니다. 배치 프로세스를 원합니다.

@Gnouc 샘플이 제공되었습니다. 감사합니다!

답변:


8

docx2txtdocx압축 된 XML 파일 세트 인 파일 의 정보를 처리 합니다.

.docxXML 데이터 줄 바꿈과 관련하여 소프트 브레이크가 아닌 단락 및 하드 브레이크에 대한 정보 만 포함합니다. 소프트 브레이크는 텍스트를 특정 글꼴, 글꼴 크기 및 페이지 너비로 렌더링 한 결과입니다. docx2txt일반적으로 글꼴 및 글꼴 크기에 관계없이 80 열 (80 열 구성 가능)에 텍스트를 맞추려고합니다. .docxUnix / Linux에서 사용할 수없는 Windows 시스템의 글꼴 정보가 포함 된 경우 .txtOpen / LibreOffice 를 통한 내보내기 는 동일한 작업을 수행 할 수 있지만 동일한 작업을 수행 할 수는 없습니다 ¹.

따라서 docx2txt명령 줄 기반 Open / LibreOffice 처리를 포함한 다른 명령 줄 유틸리티 는 Word에서 내보내는 것과 동일한 레이아웃으로 텍스트를 변환 할 것을 보장 하지 않습니다 ².

Word에서와 똑같이 렌더링하기를 원하거나 클라이언트 요구 사항에 의해 강제로 적용하려는 경우 내 경험에는 단 한 가지 방법이 있습니다. 귀하와 비슷한 문제에 직면하여 OpenOffice를 포함한 다른 도구를 사용하여 호환되지 않는 결과를 얻었을 때 호스트 Linux 서버에 Windows VM을 설치하는 것으로 되돌아갔습니다. 클라이언트 VM에서 프로그램은 들어오는 파일이 호스트에서 변환되는 것을 관찰하여 Word를 시작하고 변환하여 변환 한 다음 결과를 다시 복사합니다.

CR / LF 또는 LF 만 사용하거나 UTF-8 또는 기타 인코딩을 사용하는 .txt것에 대한 결정은 결과 파일이 사용되는 방식에 크게 좌우됩니다. 결과 파일이 Windows에서 사용되면 CR / LF, UTF-8 및 UTF-8 BOM을 사용해야합니다 . Linux의 최신 프로그램은 파일이 UTF-8 인 것으로 추론 할 수 있지만 BOM에 대한 정보를 사용하거나 정보를 사용하지는 않습니다. 모든 대상 응용 프로그램의 호환성을 미리 테스트해야합니다.

¹ 이런 종류의 비 호환성은 내 친구 중 일부는 원하지만 Windows에서 Linux로 변경할 수없는 주된 이유입니다. 클라이언트와 교환하는 텍스트를 가끔씩 Open / LibreOffice로 MicroSoft Word를 사용해야합니다.
² Word 파일에 사용 된 모든 글꼴을 설치할 수 있으며 때때로 일부 텍스트에 운이 좋을 수 있습니다.
³ 에서 PDF 렌더링.doc/.docx
프로그램은 마치 누군가가 메뉴를 클릭하는 것처럼 GUI 자동화를 사용하며 API를 통해 Word를 구동하지 않습니다. 나는 후자가 또한 수행 될 수 있다고 확신하며 Word가 업그레이드 될 경우 일을 중단시키지 않을 이점이 있습니다


고마워요, 이것은 정말 통찰력입니다! 나는 형식에 익숙하지 않았지만 스크립트를 호출했으며 vimXML에 관한 모든 것을 볼 수있었습니다. 더 자세히 살펴 봐야합니다. 글꼴이나 하이픈에 대해 생각하지 않았습니다. 또한 일부 작업 중에 BOM에 대해 불평하는 텍스트 편집기의 메시지가 있었으므로 링크를 읽을 것입니다 (이것이 무엇인지 전혀 알지 못했기 때문에). 나는 당신의 VM 솔루션에 놀랐습니다! GUI 자동화에 어느 정도 익숙합니다. 기본 이미지가 복제 된 후 워크 스테이션을 구축하는 데 사용되는 것을 보았습니다. 이것에 대해 생각하지 않았다 ...

결국 그러한 작업으로 소호 가 되는 사람 은 몇 가지 라이센스 비용을 내면화해야 할 수도 있습니다. 언젠가 그들은 사용 API로 계층을 수행 할 수 있습니다. 소프트 브레이크에서 줄 바꿈은 grep; 줄이 길면 출력의 "정밀도"가 줄어 듭니다. 내용의 특성과 사용 방법에 따라 제약 조건이 달라집니다. 반면에 문서가 여기에서 단어 번호 매기기 기능에 의존하지 않았다면 그러한 질문은 없을 것입니다. 레거시 자료를 포함하는 문서 프레임 워크를 구축하는 것은 심각한 비즈니스입니다. 건배!
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.