문제

주어진 파일이 파일의 내용이 아닌 파일의 내용을 기반으로 한 ODF 파일임을 식별 할 수 있어야합니다.

ODF 파일은 실제로 Zip 컨테이너의 XML 파일 모음입니다. 즉, 파일의 마법 번호를 사용할 수 없다는 것을 의미합니다.

그래서 제가 정말로 묻는 것은 파일이 있습니까? 필수의 ODF 컨테이너에 존재합니까? 그렇다면 지퍼 컨테이너에 해당 파일이 있으면 ODF 파일 일 가능성이 높으며 해당 파일이 없으면 확실히 ~ 아니다 ODF 파일.

도움이 되었습니까?

해결책

확인해보십시오 ODF 기술 사양? 나열된 MimeType 파일은 아마도 이상적인 방법을 확인하는 이상적인 방법 일 것입니다 (그냥 찾으십시오. vnd.oasis.opendocument Mimetype의 문자열).

다른 팁

내가 이해할 수 있듯이, 아카이브의 루트에 항상 .xml 파일이있을 것이며이 XML 파일은 항상 문자열이 포함됩니다. <office:document 처음에 가까운 곳.

내가 본 모든 사람들은 루트에 "content.xml"이라는 파일을 포함하는 것으로 보이며, 여기에는이 문자열이 포함되어 있습니다.

ODF 문서를 작성하는 응용 프로그램은 많지 않으며 과거에는 기본적으로 단지 하나만있었습니다. 따라서 고대 버전의 OpenOffice를 설치하고 몇 개의 파일을 저장 하고이 규칙이 현재 ODF 파일에서와 같이 적용되는지 확인하는 것은 너무 어렵지 않아야합니다.

알고있는 ODF 파일의 배치에서 이와 같은 것을 테스트하여 신뢰할 수 있는지 확인합니다.

$ unzip -c $FILE content.xml | grep -q '<office:document' && echo yes || echo NO

빌드 ID 읽기 - 누락 된 경우 문서는 ODF가 아닙니다.

oDoc = ThisComponent
If oDoc.BuildID = "" Then
    bIsNotODF = TRUE
Endif
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top