함께 작업하기: DisplayList 및 TextPage

이러한 클래스를 함께 사용하는 방법에 대한 지침입니다.

일부 상황에서는 여기서 설명하는 세부 수준으로 돌아가면 성능 개선을 달성할 수 있습니다.

DisplayList 생성

DisplayList (디스플레이 리스트) 는 해석된 문서 페이지를 나타냅니다. 픽스맵 생성, 텍스트 추출 및 텍스트 검색 메서드는 모두 – 배후에서 – 페이지의 디스플레이 리스트를 사용하여 작업을 수행합니다. 페이지를 여러 번 렌더링해야 하거나(예: 확대/축소 수준 변경), 텍스트 검색과 텍스트 추출을 모두 수행해야 하는 경우, 디스플레이 리스트를 한 번만 생성한 다음 다른 모든 작업에 사용하면 오버헤드를 절약할 수 있습니다.

>>> dl = page.get_displaylist()              # create the display list

여러 페이지에 대한 디스플레이 리스트를 “스택에”(리스트에) 생성할 수도 있습니다. 문서를 열 때, 유휴 시간 동안, 또는 페이지를 처음 방문할 때(예: GUI 스크립트) 저장할 수 있습니다.

다음의 모든 작업에는 디스플레이 리스트만 필요합니다. 해당 Page 객체는 삭제되었을 수 있습니다.

픽스맵 생성

다음은 DisplayList (디스플레이 리스트) 에서 픽스맵을 생성합니다. 매개변수는 Page.get_pixmap() 과 동일합니다.

>>> pix = dl.get_pixmap()                    # create the page's pixmap

이 문의 실행 시간은 Page.get_pixmap() 보다 최대 50% 짧을 수 있습니다.

텍스트 추출

위의 동일한 TextPage 객체를 사용하여 이제 5가지 텍스트 추출 메서드 중 하나 또는 모두를 즉시 사용할 수 있습니다.

참고

위에서 인수 없이 텍스트 페이지를 생성했습니다. 이것은 기본 인수 3(ligatures 및 공백이 보존됨)으로 이어지며, 즉 이미지는 추출되지 않습니다 – 아래를 참조하세요.

>>> txt  = tp.extractText()                  # plain text format
>>> json = tp.extractJSON()                  # json format
>>> html = tp.extractHTML()                  # HTML format
>>> xml  = tp.extractXML()                   # XML format
>>> xml  = tp.extractXHTML()                 # XHTML format

추가 성능 개선

픽스맵

Page 장에서 설명한 대로:

투명도가 필요하지 않으면 픽스맵을 생성할 때 alpha = 0 을 설정하세요. 이것은 25%의 메모리를 절약하고(RGB인 경우, 가장 일반적인 경우) GUI 소프트웨어에 따라 실행 시간을 약 5% 절약할 수 있습니다.

TextPage

페이지의 텍스트와 함께 이미지를 추출할 필요가 없으면 다음 옵션을 설정할 수 있습니다:

>>> flags = pymupdf.TEXT_PRESERVE_LIGATURES | pymupdf.TEXT_PRESERVE_WHITESPACE
>>> tp = dl.get_textpage(flags)

이것은 HTML, XHTML 및 JSON 텍스트 추출의 전체 실행 시간을 약 25% 절약하고, 문서가 그래픽 지향적인 경우 스토리지(메모리 및 디스크 공간 모두)의 양을 대폭 줄입니다.

하지만 이미지가 필요한 경우 플래그에 7 값을 사용하세요:

>>> flags = pymupdf.TEXT_PRESERVE_LIGATURES | pymupdf.TEXT_PRESERVE_WHITESPACE | pymupdf.TEXT_PRESERVE_IMAGES

This software is provided AS-IS with no warranty, either express or implied. This software is distributed under license and may not be copied, modified or distributed except as expressly authorized under the terms of that license. Refer to licensing information at artifex.com or contact Artifex Software Inc., 39 Mesa Street, Suite 108A, San Francisco CA 94129, United States for further information.