Page¶
문서 페이지를 나타내는 클래스. 페이지 객체는 Document.load_page() 또는 동등하게 doc[n] 과 같이 문서를 인덱싱하여 생성됩니다 - 독립적인 생성자가 없습니다.
문서와 페이지 간에는 부모-자식 관계가 있습니다. 문서가 닫히거나 삭제되면 존재하는 모든 페이지 객체(및 각각의 자식도)가 사용 불가능해집니다(“고아”): 페이지 속성이나 메서드가 사용되면 예외가 발생합니다.
편의를 위해 여러 페이지 메서드에는 Document 대응 항목이 있습니다. 이 장의 끝에서 요약을 찾을 수 있습니다.
참고
이 장에서 여러 번 좌표 라는 용어를 사용합니다. 그것이 무엇인지에 대한 기본적인 이해를 갖추고 좌표 섹션에 익숙해지는 것이 매우 중요합니다.
페이지 수정¶
페이지 속성 변경 및 페이지 콘텐츠 추가 또는 변경은 PDF 문서에서만 사용할 수 있습니다.
간단히 말하면, PyMuPDF 로 할 수 있는 것은 다음과 같습니다:
페이지 회전 및 페이지의 보이는 부분(“cropbox”)을 수정합니다.
이미지, 다른 PDF 페이지, 텍스트 및 간단한 기하학적 객체를 삽입합니다.
주석 및 양식 필드를 추가합니다.
참고
원하는 위치에 콘텐츠를 배치하기 위해 좌표(점, 사각형)가 필요합니다. 이러한 좌표는 항상 회전되지 않은 페이지를 기준으로 제공되어야 합니다(v1.17.0부터). 역도 마찬가지입니다: Page.rect, 각각 Page.bound() (둘 다 페이지가 회전될 때 반영 됨)를 제외하고, 메서드와 속성에서 반환된 모든 좌표는 회전되지 않은 페이지에 해당합니다.
따라서 예를 들어 Page.get_image_bbox() 의 반환 값은 Page.set_rotation() 을 수행해도 변경되지 않습니다. Page.get_text(), 주석 사각형 등에서 반환된 좌표도 마찬가지입니다. 객체가 회전된 좌표 에서 어디에 있는지 확인하려면 좌표에 Page.rotation_matrix 를 곱하세요. 역행렬인 Page.derotation_matrix 도 있으며, 이 점에서 다르게 동작할 수 있는 다른 리더와 인터페이스할 때 사용할 수 있습니다.
참고
페이지에 주석, 링크 또는 양식 필드를 추가하거나 업데이트하고 즉시 작업해야 하는 경우(즉, 페이지를 떠나지 않고), 이러한 새 항목이나 업데이트된 항목을 참조하기 전에 Document.reload_page() 를 사용하여 페이지를 다시 로드해야 합니다.
페이지 다시 로드는 일반적으로 권장됩니다 – 모든 경우에 엄격하게 필요하지는 않지만. 그러나 일부 주석 및 위젯 타입은 MuPDF와 비교하여 PyMuPDF 에서 확장 기능을 가지고 있습니다. 이러한 확장 기능이 더 추가될 수도 있습니다.
페이지를 다시 로드하면 모든 변경 사항이 PDF 구조에 완전히 적용되므로 Pixmap을 안전하게 만들거나 주석, 링크 및 양식 필드를 성공적으로 반복할 수 있습니다.
메서드 / 속성 |
간단한 설명 |
|---|---|
PDF 전용: 캐럿 주석 추가 |
|
PDF 전용: 원형 주석 추가 |
|
PDF 전용: 파일 첨부 주석 추가 |
|
PDF 전용: 텍스트 주석 추가 |
|
PDF 전용: “강조” 주석 추가 |
|
PDF 전용: 잉크 주석 추가 |
|
PDF 전용: 선 주석 추가 |
|
PDF 전용: 다각형 주석 추가 |
|
PDF 전용: 다중선 주석 추가 |
|
PDF 전용: 사각형 주석 추가 |
|
PDF 전용: 수정 주석 추가 |
|
PDF 전용: “물결선” 주석 추가 |
|
PDF 전용: “고무 도장” 주석 추가 |
|
PDF 전용: “취소선” 주석 추가 |
|
PDF 전용: 주석 추가 |
|
PDF 전용: “밑줄” 주석 추가 |
|
PDF 전용: PDF 양식 필드 추가 |
|
PDF 전용: 주석(및 위젯) 이름 목록 |
|
PDF 전용: 주석(및 위젯) xref 목록 |
|
페이지의 주석에 대한 생성자 반환 |
|
PDF 전용: 페이지의 수정 처리 |
|
PDF 전용: 사각형 외부의 페이지 콘텐츠 제거 |
|
페이지의 사각형 |
|
PDF 전용: 벡터 그래픽의 경계 상자 |
|
PDF 전용: 주석 삭제 |
|
PDF 전용: 이미지 삭제 |
|
PDF 전용: 링크 삭제 |
|
PDF 전용: 위젯/필드 삭제 |
|
PDF 전용: 3차 베지어 곡선 그리기 |
|
PDF 전용: 원 그리기 |
|
PDF 전용: 특수 베지어 곡선 그리기 |
|
PDF 전용: 선 그리기 |
|
PDF 전용: 타원 그리기 |
|
PDF 전용: 점 시퀀스 연결 |
|
PDF 전용: 사각형 그리기 |
|
PDF 전용: 사각형 그리기 |
|
PDF 전용: 원형 섹터 그리기 |
|
PDF 전용: 물결선 그리기 |
|
PDF 전용: 지그재그 선 그리기 |
|
페이지에서 테이블 찾기 |
|
페이지의 벡터 그래픽 가져오기 |
|
PDF 전용: 참조된 폰트 목록 가져오기 |
|
PDF 전용: 임베디드 이미지의 bbox 및 행렬 가져오기 |
|
사용된 모든 이미지의 메타 정보 목록 가져오기 |
|
PDF 전용: |
|
PDF 전용: 참조된 이미지 목록 가져오기 |
|
PDF 전용: 페이지의 레이블 반환 |
|
모든 링크 가져오기 |
|
래스터 형식의 페이지 이미지 생성 |
|
SVG 형식의 페이지 이미지 생성 |
|
페이지의 텍스트 추출 |
|
사각형에 포함된 텍스트 추출 |
|
페이지에 대한 OCR이 포함된 TextPage 생성 |
|
페이지에 대한 TextPage 생성 |
|
PDF 전용: 참조된 xobjects 목록 가져오기 |
|
PDF 전용: 페이지에서 사용할 폰트 삽입 |
|
PDF 전용: 이미지 삽입 |
|
PDF 전용: 링크 삽입 |
|
PDF 전용: 텍스트 삽입 |
|
PDF 전용: 사각형에 HTML 텍스트 삽입 |
|
PDF 전용: 텍스트 상자 삽입 |
|
페이지의 링크에 대한 생성자 반환 |
|
PDF 전용: 특정 주석 로드 |
|
PDF 전용: 특정 필드 로드 |
|
페이지의 첫 번째 링크 반환 |
|
PDF 전용: 새 Shape 생성 |
|
PDF 전용: 객체의 색상 공간 변경 |
|
PDF 전용: 페이지 회전을 0으로 설정 |
|
PDF 전용: 이미지 교체 |
|
문자열 검색 |
|
PDF 전용: |
|
PDF 전용: |
|
PDF 전용: |
|
PDF 전용: |
|
PDF 전용: 페이지 회전 설정 |
|
PDF 전용: |
|
PDF 전용: PDF 페이지 이미지 표시 |
|
PDF 전용: 링크 수정 |
|
페이지의 필드에 대한 생성자 반환 |
|
하나 이상의 TextWriter (텍스트 라이터) 객체 쓰기 |
|
|
|
페이지의 |
|
페이지의 |
|
페이지의 |
|
페이지의 |
|
PDF 전용: 회전되지 않은 페이지 공간에서 좌표 가져오기 |
|
페이지의 첫 번째 Annot (주석) |
|
페이지의 첫 번째 Link |
|
페이지의 첫 번째 위젯(양식 필드) |
|
|
|
페이지의 |
|
페이지 번호 |
|
소유 문서 객체 |
|
페이지의 사각형 |
|
PDF 전용: 회전된 페이지 공간에서 좌표 가져오기 |
|
PDF 전용: 페이지 회전 |
|
PDF 전용: PDF와 MuPDF 공간 간 변환 |
|
PDF 전용: 페이지 |
클래스 API
- class Page¶
- bound()¶
페이지의 사각형을 결정합니다. 속성
Page.rect와 동일합니다. PDF 문서의 경우 이것은 일반적으로mediabox및cropbox와도 일치하지만 항상은 아닙니다. 예를 들어, 페이지가 회전된 경우 이것은 이 메서드에 반영됩니다 – 그러나Page.cropbox는 변경되지 않습니다.- 반환 형식:
- add_caret_annot(point)¶
PDF 전용: 캐럿 아이콘을 추가합니다. 캐럿 주석은 일반적으로 페이지에 텍스트 편집이 있음을 나타내는 데 사용되는 시각적 기호입니다.
- 매개변수:
point (point_like) – MuPDF에서 제공하는 아이콘을 포함하는 20 x 20 사각형의 왼쪽 위 점.
- 반환 형식:
- 반환:
생성된 주석. 선 색상 파란색 = (0, 0, 1), 채우기 색상 지원 없음.
Show/hide history
v1.16.0에서 새로 추가됨
- add_text_annot(point, text, icon='Note')¶
PDF 전용: 텍스트와 함께 주석 아이콘(“스티키 노트”)을 추가합니다. 아이콘만 보이고 텍스트는 숨겨져 있으며 많은 PDF 뷰어에서 기호 위에 마우스를 올리면 표시할 수 있습니다.
- 매개변수:
point (point_like) – MuPDF에서 제공하는 “노트” 아이콘을 포함하는 20 x 20 사각형의 왼쪽 위 점.
text (str) – 주석 텍스트. 아이콘을 더블 클릭하거나 마우스를 올리면 표시됩니다. 모든 라틴 문자를 포함할 수 있습니다.
icon (str) – “Note” (기본값), “Comment”, “Help”, “Insert”, “Key”, “NewParagraph”, “Paragraph” 중 하나를 텍스트의 시각적 기호로 선택합니다 [4]. (v1.16.0에서 새로 추가됨)
- 반환 형식:
- 반환:
생성된 주석. 선 색상 노란색 = (1, 1, 0), 채우기 색상 지원 없음.
- add_freetext_annot(rect, text, *, fontsize=11, fontname='helv', text_color=0, fill_color=None, border_width=0, dashes=None, callout=None, line_end=PDF_ANNOT_LE_OPEN_ARROW, opacity=1, align=TEXT_ALIGN_LEFT, rotate=0, richtext=False, style=None)¶
PDF 전용: 주어진 사각형에 텍스트를 추가합니다. 선택적으로 두 개 또는 세 개의 점과 같은 객체를 지정하여 “말풍선” 모양의 모양을 요청할 수 있습니다 – 아래 참조.
- 매개변수:
rect (rect_like) – 텍스트가 삽입될 사각형. 텍스트는 상자 너비에서 자동으로 새 줄로 줄바꿈됩니다. 사각형에 맞지 않는 텍스트 부분은 경고 없이 보이지 않습니다.
text (str) – 텍스트. 라틴, 그리스, 키릴, 중국어, 일본어 및 한국어 문자의 모든 조합을 포함할 수 있습니다.
richtext=True(아래 참조)인 경우 문자열은 HTML 구문으로 해석됩니다. 이것은 매력적인 효과를 위한 다양한 방법을 추가합니다.fontsize (float) –
fontsize. 기본값은 11입니다.richtext=True인 경우 무시됩니다.fontname (str) –
폰트 이름. 기본값은 “Helv”입니다.
richtext=True인 경우 무시되며, 그렇지 않으면 다음 제한 사항이 적용됩니다:허용되는 대안은 “Helv” (Helvetica), “Cour” (Courier), “TiRo” (Times-Roman), “ZaDb” (ZapfDingBats) 및 “Symb” (Symbol)입니다. 이름은 “Cour”의 경우 “Co”와 같이 처음 두 문자로 축약할 수 있으며, 소문자가 허용됩니다.
폰트의 굵게 또는 기울임꼴 변형은 지원되지 않습니다.
text_color (list,tuple,float) – 텍스트 색상. 기본값은 검은색입니다.
richtext=True인 경우 무시됩니다.fill_color (list,tuple,float) – 채우기 색상. 이것은
rect및 해당하는 경우 말풍선 선의 끝점에 사용됩니다. 기본값은None입니다.border_color (list,tuple,float) – 이 매개변수는
richtext=True인 경우에만 효과가 있습니다. 그렇지 않으면text_color가 사용됩니다.border_width (float) – 테두리 및
callout선의 너비. 기본값은 0(테두리 없음)이며, 이 경우 사용된 PDF 뷰어에 따라 말풍선 선이 여전히 얇은 선 너비로 나타날 수 있습니다. 어떤 경우든 테두리 선을 보려면 이 값이 양수여야 합니다.dashes (list,tuple) – 테두리 및 말풍선 선을 점선으로 표시하는 방법을 지정하는 float 목록. 기본값은
None입니다.callout (list,tuple) – 두 개 또는 세 개의
point_like객체의 리스트/튜플로, 최대 두 개의 선분의 끝점 [, 무릎 점] 및 시작점(이 순서로)으로 해석되어 이 주석을 말풍선 모양으로 변환합니다.line_end (int) – 말풍선 선의 선 끝 기호.
callout목록에 지정된 첫 번째 점에 그려집니다. 기본값은 열린 화살표입니다. 가능한 값은 주석 선 끝 스타일 를 참조하세요.opacity (float) – 주석을 투명하게 만드는 float
0 <= opacity < 1. 기본값은 투명도 없음입니다.align (int) – 텍스트 정렬, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT 중 하나 - 양쪽 정렬은 지원되지 않습니다.
richtext=True인 경우 무시됩니다.rotate (int) – 텍스트 방향. 허용되는 값은 90°의 정수 배수입니다. 잘못된 항목은 회전 0을 받습니다.
richtext (bool) –
text를 HTML 구문으로 처리합니다. 이것은 굵게, 기울임꼴, 임의의 텍스트 색상, 폰트 크기, 양쪽 정렬을 포함한 텍스트 정렬 등을 달성할 수 있게 합니다 - PDF HTML 서브셋 및 스타일 지시문이 이를 지원하는 한. 이것은Page.insert_htmlbox()에서 일어나는 것과 유사합니다. 기본 라이브러리는 예를 들어 표준 폰트에 포함되지 않은 문자를 만나면 필요한 폰트를 가져옵니다. 이 옵션이 설정되면 위에서 언급한 대로 일부 매개변수가 무시됩니다. 기본값은False입니다.style (str) – CSS 구문으로 선택적 HTML 스타일 정보를 제공합니다.
richtext=False인 경우 무시됩니다.
- 반환 형식:
- 반환:
생성된 주석.
Show/hide history
v1.19.6에서 변경됨: 테두리 색상 매개변수 추가
- add_file_annot(point, buffer_, filename, ufilename=None, desc=None, icon='PushPin')¶
PDF 전용: 지정된 위치에 “PushPin” 아이콘이 있는 파일 첨부 주석을 추가합니다.
- 매개변수:
pos (point_like) – MuPDF에서 제공하는 “PushPin” 아이콘을 포함하는 18x18 사각형의 왼쪽 위 점.
buffer (bytes,bytearray,BytesIO) –
저장할 데이터(실제 파일 콘텐츠, 모든 데이터 등).
v1.14.13에서 변경됨: io.BytesIO 도 이제 지원됩니다.
filename (str) – 데이터와 연결할 파일명.
ufilename (str) – 파일명의 선택적 PDF 유니코드 버전. 기본값은 파일명입니다.
desc (str) – 파일의 선택적 설명. 기본값은 파일명입니다.
icon (str) – “PushPin” (기본값), “Graph”, “Paperclip”, “Tag” 중 하나를 첨부된 데이터의 시각적 기호로 선택합니다 [4]. (v1.16.0에서 새로 추가됨)
- 반환 형식:
- 반환:
생성된 주석. 선 색상 노란색 = (1, 1, 0), 채우기 색상 지원 없음.
- add_ink_annot(list)¶
PDF 전용: “자유형” 낙서 주석을 추가합니다.
- 매개변수:
list (sequence) – 하나 이상의 리스트의 리스트로, 각각
point_like항목을 포함합니다. 이러한 하위 리스트의 각 항목은 연결 선이 그려지는 Point 로 해석됩니다. 따라서 별도의 하위 리스트는 별도의 그리기 선을 나타냅니다.- 반환 형식:
- 반환:
기본 모양 검은색 =(0, 0, 0), 선 너비 1의 생성된 주석. 채우기 색상 지원 없음.
- add_line_annot(p1, p2)¶
PDF 전용: 선 주석을 추가합니다.
- 매개변수:
p1 (point_like) – 선의 시작점.
p2 (point_like) – 선의 끝점.
- 반환 형식:
- 반환:
생성된 주석. 선(스트로크) 색상 빨간색 = (1, 0, 0) 및 선 너비 1로 그려집니다. 채우기 색상 지원 없음. 주석 사각형 은 두 점을 포함하도록 자동으로 생성되며, 각 점은 선 끝 기호를 위한 공간을 만들기 위해 반경 3 * 선 너비의 원으로 둘러싸입니다.
- add_rect_annot(rect)¶
- add_circle_annot(rect)¶
PDF 전용: 사각형, 각각 원형 주석을 추가합니다.
- 매개변수:
rect (rect_like) – 원 또는 사각형이 그려지는 사각형은 유한하고 비어 있지 않아야 합니다. 사각형이 정사각형이 아니면 타원이 그려집니다.
- 반환 형식:
- 반환:
생성된 주석. 선(스트로크) 색상 빨간색 = (1, 0, 0), 선 너비 1로 그려지며, 채우기 색상이 지원됩니다.
수정¶
- add_redact_annot(quad, text=None, fontname=None, fontsize=11, align=TEXT_ALIGN_LEFT, fill=(1, 1, 1), text_color=(0, 0, 0), cross_out=True)¶
PDF 전용: 수정 주석을 추가합니다. 수정 주석은 콘텐츠가 문서에서 제거되어야 하는 영역을 식별합니다. 이러한 주석을 추가하는 것은 두 단계 중 첫 번째 단계입니다. 다음 단계인
Page.apply_redactions()에서 제거될 내용을 표시합니다.- 매개변수:
quad (quad_like,rect_like) – 제거할 (사각형) 영역을 지정하며 항상 주석 사각형과 같습니다. 이것은
rect_like또는quad_like객체일 수 있습니다. quad가 지정되면 둘러싸는 사각형이 사용됩니다.text (str) – 수정을 적용한 후(따라서 이전 콘텐츠를 제거한 후) 사각형에 배치할 텍스트. (v1.16.12에서 새로 추가됨)
fontname (str) –
text가 제공될 때 사용할 폰트, 그렇지 않으면 무시됩니다. CJK 및 PDF Base 14 글꼴 만 지원됩니다. 이 외에는Page.insert_textbox()와 동일한 규칙이 적용됩니다 – 이것은 메서드Page.apply_redactions()가 내부적으로 호출하는 것입니다.fontsize (float) – 교체 텍스트에 사용할
fontsize. 텍스트가 너무 커서 맞지 않으면 여러 번 삽입을 시도하며,fontsize를 점진적으로 4 이상으로 줄입니다. 그래도 텍스트가 맞지 않으면 텍스트 삽입이 전혀 수행되지 않습니다. (v1.16.12에서 새로 추가됨)align (int) – 교체 텍스트의 수평 정렬. 사용 가능한 값은
insert_textbox()를 참조하세요. 수직 정렬은 (대략) 중앙입니다.fill (sequence) – 수정을 적용한 후 사각형의 채우기 색상. 기본값은 white = (1, 1, 1) 이며,
None이 지정된 경우에도 사용됩니다. 채우기 색상을 완전히 억제하려면False를 지정하세요. 이 경우 사각형은 투명하게 유지됩니다. (v1.16.12에서 새로 추가됨)text_color (sequence) – 교체 텍스트의 색상. 기본값은 black = (0, 0, 0) 입니다. (v1.16.12에서 새로 추가됨)
cross_out (bool) – 주석 사각형에 두 개의 대각선을 추가합니다. (v1.17.2에서 새로 추가됨)
- 반환 형식:
- 반환:
생성된 주석. 표준 모양은 빨간색 사각형(채우기 색상 없음)이며, 선택적으로 두 개의 대각선을 표시합니다. 색상, 선 너비, 점선, 불투명도 및 블렌드 모드는 이제 다른 주석과 마찬가지로
Annot.update()를 통해 설정하고 적용할 수 있습니다. (v1.17.2에서 변경됨)
Show/hide history
v1.16.11에서 새로 추가됨
- apply_redactions(images=PDF_REDACT_IMAGE_PIXELS | 2, graphics=PDF_REDACT_LINE_ART_REMOVE_IF_COVERED | 1, text=PDF_REDACT_TEXT_REMOVE | 0)¶
PDF 전용: 페이지의 모든 수정 사각형에 포함된 콘텐츠 를 제거합니다.
이 메서드는 모든 수정을 적용한 다음 페이지에서 삭제합니다.
- 매개변수:
images (int) – How to redact overlapping images. The default
PDF_REDACT_IMAGE_PIXELS | 2blanks out overlapping pixels.PDF_REDACT_IMAGE_NONE | 0ignores, andPDF_REDACT_IMAGE_REMOVE | 1completely removes images overlapping any redaction annotation. OptionPDF_REDACT_IMAGE_REMOVE_UNLESS_INVISIBLE | 3only removes images that are actually visible.graphics (int) – How to redact overlapping vector graphics (also called “line-art” or “drawings”). The default
PDF_REDACT_LINE_ART_REMOVE_IF_COVERED | 1removes any overlapping vector graphics.PDF_REDACT_LINE_ART_NONE | 0ignores, andPDF_REDACT_LINE_ART_REMOVE_IF_TOUCHED | 2removes graphics fully contained in a redaction annotation. When removing line-art, please be aware that stroked vector graphics (i.e. type “s” or “sf”) have a larger wrapping rectangle than one might expect: first of all, at least 50% of the path’s line width have to be added in each direction to truly include all of the drawing. If a so-called “miter limit” is provided (see page 121 of the PDF specification), the enlarging value ismiter * width / 2. So, when letting everything default (width = 1, miter = 10), the redaction rectangle should be at least 5 points larger in every direction.text (int) – 겹치는 텍스트를 수정할지 여부. 기본값
PDF_REDACT_TEXT_REMOVE | 0은 경계 상자가 수정 사각형과 겹치는 모든 문자를 제거합니다. 이것은 수정 주석의 원래 법적/데이터 보호 의도에 부합합니다. 그러나 다른 사용 사례에서는 벡터 그래픽이나 이미지를 수정하는 동안 텍스트를 유지 해야 할 수 있습니다. 이것은text=True|PDF_REDACT_TEXT_NONE | 1로 설정하여 달성할 수 있습니다. 이것은 수정 주석의 데이터 보호 의도에 부합하지 않습니다. 자신의 위험으로 수행하세요.
- 반환:
최소 하나의 수정 주석이 처리되었으면
True, 그렇지 않으면False.
참고
수정 사각형에 포함된 텍스트는 페이지에서 물리적으로 제거됩니다(적절한 가비지 옵션으로
Document.save()가정) 그리고 예를 들어 텍스트 추출이나 다른 곳에서 더 이상 나타나지 않습니다. 모든 수정 주석도 제거됩니다. 다른 주석은 영향을 받지 않습니다.모든 겹치는 링크가 제거됩니다. 링크의 사각형이 텍스트를 덮고 있으면 텍스트의 겹치는 부분만 제거됩니다. 링크 사각형으로 덮인 이미지에도 유사하게 적용됩니다.
이미지 의 겹치는 부분은 기본 옵션
PDF_REDACT_IMAGE_PIXELS(v1.18.0에서 변경됨)에 대해 지워집니다. 옵션 0은 이미지를 건드리지 않고 1은 겹치는 모든 이미지를 제거합니다.옵션
images=PDF_REDACT_IMAGE_REMOVE의 경우 이 페이지의 이미지에 대한 참조 만 제거됩니다 - 반드시 이미지 자체는 아닙니다. 이미지는 더 이상 전혀 참조되지 않는 경우에만 파일에서 완전히 제거됩니다(적절한 가비지 수집 옵션 가정).옵션
images=PDF_REDACT_IMAGE_PIXELS의 경우 PNG 형식의 새 이미지가 생성되며, 페이지는 원본 대신 이것을 사용합니다. 원본 이미지는 이 프로세스의 일부로 삭제되거나 교체되지 않으므로 다른 페이지는 여전히 원본을 표시할 수 있습니다. 또한 새로 수정된 PNG 이미지는 현재 압축되지 않은 상태로 저장됩니다. 저장 중 적절한 가비지 수집 방법과 압축 옵션을 선택할 때 이러한 측면을 염두에 두세요.텍스트 제거 는 문자별로 수행됩니다: 문자의 bbox가 수정 사각형과 비어 있지 않은 겹침 이 있으면 제거됩니다(MuPDF v1.17에서 변경됨). 폰트 속성 및/또는 선택한 줄 높이에 따라 원하지 않는 텍스트 부분에 대한 삭제가 발생할 수 있습니다. 텍스트 검색 전에
True인수로Tools.set_small_glyph_heights()를 사용하면 이를 방지하는 데 도움이 될 수 있습니다.수정은 PDF에서 단일 단어를 교체하거나 물리적으로 제거하는 간단한 방법입니다. 텍스트 추출 또는 검색 방법을 사용하여 “secret” 단어를 찾고 각 발생에 대해 “xxxxxx” 를 교체 텍스트로 사용하여 수정을 삽입합니다.
교체가 원본보다 긴 경우 주의하세요 – 이것은 어색한 모양, 줄 바꿈 또는 새 텍스트가 전혀 없을 수 있습니다.
여러 가지 이유로 새 텍스트가 이전 텍스트와 정확히 같은 줄에 위치하지 않을 수 있습니다 – 특히 교체 폰트가 CJK 또는 PDF Base 14 글꼴 중 하나가 아닌 경우.
Show/hide history
v1.16.11에서 새로 추가됨
v1.16.12에서 변경됨: 이전 mark 매개변수가 제거되었습니다. 대신 각 수정 주석의 개별 fill 색상으로 해당 사각형이 채워집니다. 주석에 text 가 제공된 경우
insert_textbox()가 수정과 함께 제공된 매개변수를 사용하여 삽입하도록 호출됩니다.v1.18.0에서 변경됨: 수정 영역과 겹치는 이미지를 처리하는 옵션 추가.
v1.23.27에서 변경됨: 그래픽 제거 옵션도 추가.
v1.24.2에서 변경됨: 텍스트를 그대로 두는 옵션
keep_text추가.
- add_polyline_annot(points)¶
- add_polygon_annot(points)¶
PDF 전용: 주어진 점을 연결하는 선으로 구성된 주석을 추가합니다. Polygon 의 첫 번째와 마지막 점은 자동으로 연결되지만, PolyLine 에서는 그렇지 않습니다. 사각형 은 점을 포함하는 가장 작은 사각형으로 자동 생성되며, 각 점은 반경 3(= 3 * 선 너비)의 원으로 둘러싸입니다. 다음은 색상과 선 끝으로 수정된 ‘PolyLine’을 보여줍니다.
- 매개변수:
points (list) –
point_like객체의 리스트.- 반환 형식:
- 반환:
생성된 주석. 선 색상 검은색, 선 너비 1, 채우기 색상 없음이지만 채우기 색상 지원. 다음과 같은 것을 달성하기 위해 변경하려면 Annot (주석) 의 메서드를 사용하세요:
- add_underline_annot(quads=None, start=None, stop=None, clip=None)¶
- add_strikeout_annot(quads=None, start=None, stop=None, clip=None)¶
- add_squiggly_annot(quads=None, start=None, stop=None, clip=None)¶
- add_highlight_annot(quads=None, start=None, stop=None, clip=None)¶
PDF 전용: 이러한 주석은 일반적으로 이전에 어떤 방식으로든 찾은(예:
Page.search_for()를 통해) 텍스트를 표시 하는 데 사용됩니다. 하지만 이것은 필수는 아닙니다: 무엇이든 “표시”할 수 있습니다.표준(스트로크만 – 채우기 색상 지원 없음) 색상은 주석 유형별로 선택됩니다: 강조는 노란색, 취소선은 빨간색, 밑줄은 초록색, 물결 밑줄은 자홍색.
이 네 가지 메서드는 모두 인수를 Quad 객체의 리스트로 변환합니다. 그런 다음 주석 사각형이 이러한 모든 사각형을 둘러싸도록 계산됩니다.
참고
search_for()는 Rect 또는 Quad 객체의 리스트를 제공합니다. 이러한 리스트는 이러한 주석 유형에 대한 인수로 직접 사용할 수 있으며 검색 문자열의 모든 발생에 대해 하나의 공통 주석 을 제공합니다:>>> # prefer quads=True in text searching for annotations! >>> quads = page.search_for("pymupdf", quads=True) >>> page.add_highlight_annot(quads)
참고
명백히, 텍스트 마커 주석은 표시할 영역의 위, 아래, 왼쪽, 오른쪽이 무엇인지 알아야 합니다. 인수가 quad인 경우 이 정보는 quad 점의 시퀀스로 제공됩니다. 반면 사각형은 훨씬 적은 정보를 제공합니다 – 사각형의 네 모서리로 4! = 24개의 서로 다른 quad를 구성할 수 있다는 사실로 설명됩니다.
따라서 올바른 주석을 보장하기 위해 텍스트 검색에
quads옵션을 사용하는 것을 강력히 권장 합니다.Page.get_text()의 “dict” / “rawdict” 옵션으로 추출한 텍스트 범위 를 표시하는 데도 유사한 고려 사항이 적용됩니다. 이 경우 사각형을 계산하는 방법에 대한 자세한 내용은 자주 묻는 질문 의 “How to Mark Non-horizontal Text” 섹션을 참조하세요.- 매개변수:
quads (rect_like,quad_like,list,tuple) – 표시할 위치(들) – 사각형(들) 또는 quad(들). (v1.14.20에서 변경됨) 리스트 또는 튜플은
rect_like또는quad_like항목(또는 둘의 혼합)으로 구성되어야 합니다. 모든 항목은 유한하고 볼록하며 비어 있지 않아야 합니다(해당하는 경우). 다음 인수를 사용하려면 이 매개변수를None으로 설정하세요 (v1.16.14에서 변경됨). 반대로None이 아니면 나머지 매개변수는None이어야 합니다.start (point_like) – 이 지점에서 텍스트 표시를 시작합니다. 기본값은 clip 의 왼쪽 위 점입니다.
quads가None이면 제공해야 합니다. (v1.16.14에서 새로 추가됨)stop (point_like) – 이 지점에서 텍스트 표시를 중지합니다. 기본값은 clip 의 오른쪽 아래 점입니다.
quads가None이면 사용해야 합니다. (v1.16.14에서 새로 추가됨)clip (rect_like) – 이 영역과 교차하는 텍스트 줄만 고려합니다. 기본값은 페이지 사각형입니다.
start와stop이 제공된 경우에만 사용하세요. (v1.16.14에서 새로 추가됨)
- 반환 형식:
Annot (주석) 또는
None(v1.16.14에서 변경됨).- 반환:
생성된 주석. quads 가 빈 리스트이면 주석이 생성되지 않습니다 (v1.16.14에서 변경됨).
참고
매개변수 start, stop 및 clip 을 사용하여 점 start 와 stop 사이의 연속 줄을 강조할 수 있습니다(v1.16.14부터). clip 을 사용하여 선택된 줄 bbox를 더 줄여 예를 들어 다중 열 페이지를 처리합니다. 세 개의 텍스트 열이 있는 페이지의 다음 다중 줄 강조는 두 개의 빨간 점을 지정하고 clip을 그에 따라 설정하여 생성되었습니다.
- cluster_drawings(clip=None, drawings=None, x_tolerance=3, y_tolerance=3, final_filter=True)¶
기하학적 근접성을 기반으로 벡터 그래픽(line-art 또는 drawings의 동의어)을 클러스터링합니다. 이 메서드는
Page.get_drawings()의 출력을 순회하고path["rect"]가 인수에 주어진 일부 허용 오차 값보다 서로 가까운 경로를 결합합니다. 결과는 각각 테이블(격자선 포함), 파이 차트, 막대 차트 등을 래핑하는 사각형의 리스트입니다.- 매개변수:
clip (rect_like) – 이 영역 내의 경로만 고려합니다. 기본값은 전체 페이지입니다.
drawings (list) – (선택 사항)
Page.get_drawings()의 이전에 생성된 출력을 제공합니다.None이면 메서드가 메서드를 실행합니다.y_tolerance (float x_tolerance /) – 벡터 그래픽이 같은 사각형에 속하기에 충분히 가까운 이웃이라고 가정합니다. 기본값은 3포인트입니다.
final_filter (bool) –
True(기본값)이면 메서드는 너비 또는 높이가 각각의 허용 오차 값보다 작은 사각형을 제거합니다.False이면 이러한 필터링이 수행되지 않습니다.
- find_tables(clip=None, strategy=None, vertical_strategy=None, horizontal_strategy=None, vertical_lines=None, horizontal_lines=None, snap_tolerance=None, snap_x_tolerance=None, snap_y_tolerance=None, join_tolerance=None, join_x_tolerance=None, join_y_tolerance=None, edge_min_length=3, min_words_vertical=3, min_words_horizontal=1, intersection_tolerance=None, intersection_x_tolerance=None, intersection_y_tolerance=None, text_tolerance=None, text_x_tolerance=None, text_y_tolerance=None, add_lines=None, add_boxes=None, paths=None)¶
페이지에서 테이블을 찾고 관련 정보가 있는 객체를 반환합니다. 일반적으로 많은 매개변수의 기본값으로 충분합니다. 조정은 극단적인 경우에만 필요해야 합니다.
- 매개변수:
clip (rect_like) – 페이지 사각형 내에서 고려할 영역을 지정하고 나머지는 무시합니다. 기본값은 전체 페이지입니다.
strategy (str) –
테이블 감지 전략을 요청합니다. 유효한 값은 “lines”, “lines_strict” 및 “text”입니다.
기본값은 페이지의 모든 벡터 그래픽을 사용하여 격자선을 감지하는 “lines” 입니다.
전략 “lines_strict” 는 테두리 없는 사각형 벡터 그래픽을 무시합니다. 때로는 단일 텍스트 조각에 배경색이 있어 잘못된 열이나 줄을 유발할 수 있습니다. 이 전략은 이를 무시하므로 감지 정밀도를 높일 수 있습니다.
”text” 가 지정되면 텍스트 위치를 사용하여 “가상” 열 및/또는 행 경계를 생성합니다.
min_words_*를 사용하여 좌표를 고려하기 위한 단어 수를 요청합니다.차원에 대한 더 세밀한 처리를 위해 매개변수
vertical_strategy및horizontal_strategy를 대신 사용하세요.horizontal_lines (sequence[floats]) – 행의 y 좌표. 제공되면 추가 테이블 행을 식별하려는 시도가 없습니다. 이것은 테이블 감지에 영향을 줍니다.
vertical_lines (sequence[floats]) – 열의 x 좌표. 제공되면 추가 테이블 열을 식별하려는 시도가 없습니다. 이것은 테이블 감지에 영향을 줍니다.
min_words_vertical (int) – 수직 전략 옵션 “text”와 관련: 가상 열 경계를 설정하려면 최소 이만큼의 단어가 일치해야 합니다.
min_words_horizontal (int) – 수평 전략 옵션 “text”와 관련: 가상 행 경계를 설정하려면 최소 이만큼의 단어가 일치해야 합니다.
snap_tolerance (float) – y 값의 차이가 이 값 이하인 두 개의 수평선은 하나로 스냅 됩니다. 수직선도 마찬가지입니다. 기본값은 3입니다. 이 값 대신
snap_x_tolerance및snap_y_tolerance를 사용하여 차원별로 별도의 값을 지정할 수 있습니다.join_tolerance (float) – 끝점과 시작점의 차이가 이 값(포인트 단위) 이하인 경우 두 선이 하나로 결합 됩니다. 기본값은 3입니다. 이 값 대신
join_x_tolerance및join_y_tolerance를 사용하여 차원별로 별도의 값을 지정할 수 있습니다.edge_min_length (float) – 길이가 이 값(포인트 단위)을 초과하지 않으면 선을 무시합니다. 기본값은 3입니다.
intersection_tolerance (float) – 선을 셀 경계로 결합할 때 직교하는 선은 교차하는 것으로 간주되려면 이 값(포인트 단위) 이내에 있어야 합니다. 기본값은 3입니다. 이 값 대신
intersection_x_tolerance및intersection_y_tolerance를 사용하여 차원별로 별도의 값을 지정할 수 있습니다.text_tolerance (float) – 문자가 단어로 결합되는 것은 거리가 이 값(포인트 단위) 이하인 경우에만입니다. 기본값은 3입니다. 이 값 대신
text_x_tolerance및text_y_tolerance를 사용하여 차원별로 별도의 값을 지정할 수 있습니다.add_lines (tuple,list) – “lines”(즉,
point_like객체 쌍)의 리스트를 추가 “가상” 벡터 그래픽으로 지정합니다. 이러한 선은 테이블 및/또는 셀 감지에 도움이 될 수 있으며 감지 전략에는 영향을 주지 않습니다. 특히horizontal_lines및vertical_lines매개변수와 달리 다른 방법으로 행이나 열을 감지하는 것을 방지하지 않습니다. 이러한 선은 결합, 스냅, 교차, 최소 길이 및clip사각형 내 포함 측면에서 “실제” 벡터 그래픽과 정확히 동일하게 처리됩니다. 마찬가지로 좌표축 중 어느 것과도 평행하지 않은 선은 무시됩니다.add_boxes (tuple,list) – 사각형(
rect_like객체)의 리스트를 추가 “가상” 벡터 그래픽으로 지정합니다. 이러한 사각형은 테이블 및/또는 셀 감지에 도움이 될 수 있으며 감지 전략에는 영향을 주지 않습니다. 특히horizontal_lines및vertical_lines매개변수와 달리 다른 방법으로 행이나 열을 감지하는 것을 방지하지 않습니다. 이러한 사각형은 결합, 스냅, 교차, 최소 길이 및clip사각형 내 포함 측면에서 “실제” 벡터 그래픽과 정확히 동일하게 처리됩니다.paths (list) –
Page.get_drawings()에서 반환되는 형식의 벡터 그래픽 리스트. 이 매개변수를 사용하면 메서드가 벡터 그래픽을 자체적으로 추출하지 않습니다. 벡터 그래픽이 이미 사용 가능한 경우 유용합니다. 이것은 실행 시간을 크게 절약할 수 있습니다.
- 반환:
다음 중요한 속성을 가진
TableFinder객체:cells: 페이지의 모든 bbox 의 리스트로, 테이블 셀로 식별된 것들(모든 테이블에 걸쳐). 각 셀은rect_like좌표 튜플(x0, y0, x1, y1)또는None입니다.tables:Table객체의 리스트. 페이지에 테이블이 없으면 이것은[]입니다. 단일 테이블은 이 리스트의 항목으로 찾을 수 있습니다. 하지만TableFinder객체 자체는 또한 테이블의 시퀀스입니다. 이것은tabs가TableFinder객체이면 테이블 “n”은tabs.tables[n]뿐만 아니라 더 짧은tabs[n]으로도 제공된다는 것을 의미합니다.Table객체는 다음 속성을 가집니다:bbox: 튜플(x0, y0, x1, y1)로서의 테이블의 경계 상자.cells: 테이블의 셀의 경계 상자(튜플의 리스트). 셀은None일 수도 있습니다.extract(): 이 메서드는 각 테이블 셀의 텍스트 콘텐츠를 문자열의 리스트의 리스트로 반환합니다.to_markdown(): 이 메서드는 테이블을 마크다운 형식의 문자열 (Github과 호환)로 반환합니다. 마크다운 뷰어는 문자열을 테이블로 렌더링할 수 있습니다. 이 출력은 작은 토큰 크기에 최적화되어 있으며, 이는 LLM/RAG 피드에 특히 유익합니다. Pandas DataFrames (아래to_pandas()메서드 참조)는 동등한 마크다운 테이블 출력을 제공하지만 사람이 읽기에 더 좋습니다. 셀의 모든 줄 바꿈(\n)은 HTML 줄 바꿈 태그<br>로 대체됩니다.to_pandas(): 이 메서드는 테이블을 pandas DataFrame 로 반환합니다. DataFrames는 매우 다재다능한 객체로, 다양한 테이블 조작 메서드와 Excel 파일, CSV, JSON, 마크다운 형식의 테이블 등을 포함하여 거의 20개의 잘 알려진 형식으로의 출력을 허용합니다.DataFrame.to_markdown()은 사람이 읽기에 최적화된 Github 호환 마크다운 형식을 생성합니다. 그러나 이 메서드는 pandas 자체에 추가로 tabulate 패키지가 설치되어 있어야 합니다.header: 테이블의 헤더 정보를 포함하는TableHeader객체.col_count: 테이블 열 수를 포함하는 정수.row_count: 테이블 행 수를 포함하는 정수.rows: 두 가지 속성을 포함하는TableRow객체의 리스트,bbox는 행의 경계 상자이고cells는 이 행에 포함된 테이블 셀의 리스트입니다.
TableHeader객체는 다음 속성을 가집니다:bbox: 헤더의 경계 상자.cells: 각 열의 이름을 포함하는 경계 상자의 리스트.names: 각 셀 bbox의 텍스트를 포함하는 문자열의 리스트. 이것들은 열 이름을 나타냅니다 – 테이블을 pandas DataFrames, 마크다운 등으로 내보낼 때 사용됩니다.external: 헤더 bbox가 테이블 본문 밖에 있는지(True) 여부를 나타내는 bool. 테이블 헤더는TableFinder로직에 의해 식별되지 않습니다. 따라서external이 true이면 헤더 셀은TableFinder에 의해 식별된 모든 셀의 일부가 아닙니다.external == False이면 첫 번째 테이블 행이 헤더입니다.
한 페이지에 여러 테이블이 있거나 여러 페이지에 걸쳐 테이블 조각을 결합하는 것과 같은 표준 상황을 다루는 이 Jupyter notebooks 를 살펴보세요.
조심
TableFinder객체의 수명은 모든 테이블의 수명과 마찬가지로 페이지의 수명과 같습니다. 페이지 객체가 삭제되거나 재할당되면 모든 테이블이 더 이상 유효하지 않습니다.페이지의 가용성을 넘어서 테이블 콘텐츠를 유지하는 유일한 방법은 메서드
Table.to_markdown(),Table.to_pandas()또는Table.extract()의 복사본(예:Table.extract()[:])을 통해 추출하는 것입니다.참고
테이블이
to_pandas()로 Pandas DataFrame 으로 추출되면 Pandas API 로 다른 파일 형식으로 쉽게 변환할 수 있습니다:
Show/hide history
버전 1.23.0에서 새로 추가됨
버전 1.23.19에서 변경됨: 새 인수
add_lines.
중요
선호하는 경우 테이블 추출이 가능한 pdf2docx extract tables method 도 있습니다.
- add_stamp_annot(rect, stamp=0)¶
PDF 전용: 예를 들어 문서의 의도된 용도(“DRAFT”, “CONFIDENTIAL” 등)를 나타내기 위해 “고무 도장” 주석을 추가합니다. 매개변수는 표준 텍스트의 미리 정의된 배열에서 텍스트를 선택하는 정수이거나 이미지일 수 있습니다.
- 매개변수:
rect (rect_like) – 주석을 배치할 사각형.
stamp (multiple) –
다음 옵션을 사용할 수 있습니다:
스탬프 텍스트의 id 번호(int). 사용 가능한 스탬프는 스탬프 주석 아이콘 를 참조하세요.
이미지 파일 경로를 지정하는 문자열.
메모리의 이미지에 대한
bytes,bytearray또는io.BytesIO객체.
텍스트 기반 스탬프
Annot.rect는 제공된rect에 맞는width:height = 3.8의 종횡비를 가진 가장 큰 사각형으로 자동 계산됩니다. 위치는 수직 및 수평으로 중앙 정렬됩니다.선택된 폰트는 “Times Bold”이며 텍스트는 대문자가 됩니다.
외형은
Annot.set_opacity()를 사용하고 “stroke” 색상을 설정하여 수정할 수 있습니다. PDF 사양에 따라 스탬프 주석은 “fill” 색상이 없습니다.
이미지 기반 스탬프
이미지는 이미지의 중심과 Rect 의 중심이 일치하도록 Rect 에 맞게 크기가 조정됩니다. 이미지의 종횡비가 유지되므로 이미지가 전체 사각형을 채우지 않을 수 있습니다. 그러나 주어진 사각형의 너비 또는 높이 중 하나 이상이 완전히 덮입니다.
주석은
Annot.set_opacity()를 통해 수정할 수 있습니다. 따라서 이 메서드는 알파 채널이 없는 경우에도 이미지를 투명하게 표시하는 방법입니다.색상 설정은 이미지 스탬프에 영향을 주지 않습니다.
이미지 기반 스탬프 회전은 지원되지 않습니다. 회전을 설정하면 예상치 못한 결과가 발생할 수 있습니다.
- add_widget(widget)¶
PDF 전용: 페이지에 PDF 양식 필드(“위젯”)를 추가합니다. 이것은 또한 PDF를 양식 PDF로 전환 합니다. 위젯에 사용할 수 있는 다양한 옵션이 많기 때문에, 가능한 PDF 필드 속성을 포함하는 새 클래스 Widget (위젯) 을 개발했습니다. 양식 필드 생성과 업데이트 모두에 사용해야 합니다.
- 매개변수:
widget (Widget (위젯)) – 사전에 생성해야 하는 Widget (위젯) 객체.
- 반환:
위젯 주석.
- delete_annot(annot)¶
제거는 이제 연결된 ‘Popup’ 또는 응답 주석과 관련 객체를 포함합니다 (v1.16.6에서 변경됨).
PDF 전용: 페이지에서 주석을 삭제하고 다음 주석을 반환합니다.
- 매개변수:
annot (Annot (주석)) – 삭제할 주석.
- 반환 형식:
- 반환:
삭제된 주석 다음의 주석. 물리적 제거는 garbage > 0으로 새 파일에 저장해야 합니다.
- delete_widget(widget)¶
PDF 전용: 페이지에서 필드를 삭제하고 다음 필드를 반환합니다.
- 매개변수:
widget (Widget (위젯)) – 삭제할 위젯.
- 반환 형식:
- 반환:
삭제된 위젯 다음의 위젯. 물리적 제거는 garbage > 0으로 새 파일에 저장해야 합니다.
Show/hide history
(v1.18.4에서 새로 추가됨)
- delete_link(linkdict)¶
PDF 전용: 페이지에서 지정된 링크를 삭제합니다. 매개변수는
get_links()의 원본 항목 이어야 하며, get_links() 엔트리 설명 을 참조하세요. 이것은 삭제할 PDF 객체를 식별하는 딕셔너리의 “xref” 키 때문입니다.- 매개변수:
linkdict (dict) – 삭제할 링크.
- insert_link(linkdict)¶
PDF 전용: 이 페이지에 새 링크를 삽입합니다. 매개변수는
get_links()에서 제공하는 형식의 딕셔너리여야 하며, get_links() 엔트리 설명 을 참조하세요.- 매개변수:
linkdict (dict) – 삽입할 링크.
- update_link(linkdict)¶
PDF 전용: 지정된 링크를 수정합니다. 매개변수는
get_links()의 (수정된) 원본 항목 이어야 하며, get_links() 엔트리 설명 을 참조하세요. 이것은 변경할 PDF 객체를 식별하는 딕셔너리의 “xref” 키 때문입니다.- 매개변수:
linkdict (dict) – 수정할 링크.
경고
URI 링크(
"kind": LINK_URI)를 업데이트/삽입하는 경우,"uri"키의 값이"http://","https://","file://","ftp://","mailto:"등과 같은 명확한 문자열로 시작하도록 하세요. 그렇지 않으면 – 브라우저나 다른 “소비자” 소프트웨어에 따라 – 예상치 못한 기본 가정이 원하지 않는 동작을 유발할 수 있습니다.
- get_label()¶
PDF 전용: 페이지의 레이블을 반환합니다.
- 반환 형식:
str
- 반환:
로마 숫자의 경우 “vii”와 같은 레이블 문자열 또는 정의되지 않은 경우 “”.
Show/hide history
v1.18.6에서 새로 추가됨
- get_links()¶
페이지의 모든 링크를 검색합니다.
- 반환 형식:
list
- 반환:
딕셔너리의 리스트. 딕셔너리 항목에 대한 설명은 get_links() 엔트리 설명 을 참조하세요. 페이지의 링크를 변경하려면 항상 이것 또는
Page.links()메서드를 사용하세요.
- links(kinds=None)¶
페이지의 링크에 대한 제너레이터를 반환합니다. 결과는
Page.get_links()의 항목과 같습니다.- 매개변수:
kinds (sequence) – 하나 이상의 링크 종류로 다운 선택하기 위한 정수 시퀀스. 기본값은 모든 링크입니다. 예: kinds=(pymupdf.LINK_GOTO,) 는 내부 링크만 반환합니다.
- 반환 형식:
generator
- 반환:
각 반복에 대한
Page.get_links()의 항목.
Show/hide history
v1.16.4에서 새로 추가됨
- annots(types=None)¶
페이지의 주석에 대한 제너레이터를 반환합니다.
- 매개변수:
types (sequence) – 하나 이상의 주석 유형으로 다운 선택하기 위한 정수 시퀀스. 기본값은 모든 주석입니다. 예:
types=(pymupdf.PDF_ANNOT_FREETEXT, pymupdf.PDF_ANNOT_TEXT)는 ‘FreeText’ 및 ‘Text’ 주석만 반환합니다.- 반환 형식:
generator
- 반환:
각 반복에 대한 Annot (주석).
조심
이 제너레이터 내에서 주석을 안전하게 업데이트할 수 없습니다. 대부분의 주석 업데이트는
page = doc.reload_page(page)를 통해 페이지를 다시 로드해야 하기 때문입니다. 이 제한을 우회하려면 먼저 주석 xref 번호의 리스트를 만든 다음 이 번호들을 반복하세요:In [4]: xrefs = [annot.xref for annot in page.annots(types=[...])] In [5]: for xref in xrefs: ...: annot = page.load_annot(xref) ...: annot.update() ...: page = doc.reload_page(page) In [6]:
Show/hide history
v1.16.4에서 새로 추가됨
- widgets(types=None)¶
페이지의 양식 필드에 대한 제너레이터를 반환합니다.
- 매개변수:
types (sequence) – 하나 이상의 위젯 유형으로 다운 선택하기 위한 정수 시퀀스. 기본값은 모든 양식 필드입니다. 예:
types=(pymupdf.PDF_WIDGET_TYPE_TEXT,)는 ‘Text’ 필드만 반환합니다.- 반환 형식:
generator
- 반환:
각 반복에 대한 Widget (위젯).
Show/hide history
v1.16.4에서 새로 추가됨
- write_text(rect=None, writers=None, overlay=True, color=None, opacity=None, keep_proportion=True, rotate=0, oc=0)¶
PDF 전용: 하나 이상의 TextWriter (텍스트 라이터) 객체의 텍스트를 페이지에 작성합니다.
- 매개변수:
rect (rect_like) – 텍스트를 배치할 위치. 생략하면 텍스트 작성기의 사각형 합집합이 사용됩니다.
writers (sequence) – TextWriter (텍스트 라이터) 객체의 비어 있지 않은 튜플/리스트 또는 단일 TextWriter (텍스트 라이터).
opacity (float) – 투명도를 설정하고, 텍스트 작성기의 해당 값을 덮어씁니다.
color (sequ) – 텍스트 색상을 설정하고, 텍스트 작성기의 해당 값을 덮어씁니다.
overlay (bool) – 텍스트를 전경 또는 배경에 배치합니다.
keep_proportion (bool) – 종횡비를 유지합니다.
rotate (float) – 임의의 각도로 텍스트를 회전합니다.
참고
매개변수 overlay, keep_proportion, rotate 및 oc 는
Page.show_pdf_page()와 동일한 의미를 가집니다.Show/hide history
v1.16.18에서 새로 추가됨
- insert_text(point, text, *, fontsize=11, fontname='helv', fontfile=None, idx=0, color=None, fill=None, render_mode=0, miter_limit=1, border_width=0.05, encoding=TEXT_ENCODING_LATIN, rotate=0, morph=None, stroke_opacity=1, fill_opacity=1, overlay=True, oc=0)¶
PDF 전용:
point_likepoint에서 시작하는 텍스트 줄을 삽입합니다.Shape.insert_text()를 참조하세요.Show/hide history
v1.18.4에서 변경됨
- insert_textbox(rect, buffer, *, align=TEXT_ALIGN_LEFT, border_width=1, color=None, encoding=TEXT_ENCODING_LATIN, expandtabs=8, fill=None, fill_opacity=1, fontfile=None, fontname='helv', fontsize=11, lineheight=None, miter_limit=1, morph=None, oc=0, overlay=True, render_mode=0, rotate=0, set_simple=False, stroke_opacity=1)¶
PDF only: Insert text into the specified
rect_likerect.- 매개변수:
overlay – see
Shape.commit().
For other args, see
Shape.insert_textbox.Show/hide history
v1.18.4에서 변경됨
- insert_htmlbox(rect, text, *, css=None, scale_low=0, archive=None, rotate=0, oc=0, opacity=1, overlay=True)¶
PDF 전용: 지정된 사각형에 텍스트를 삽입합니다. 이 메서드는
Page.insert_textbox()및TextWriter.fill_textbox()메서드와 유사하지만 훨씬 더 강력합니다. 이것은 Story 객체가 필요한 모든 처리를 수행하도록 하여 달성됩니다.매개변수
text는 다른 메서드와 마찬가지로 문자열일 수 있습니다. 하지만 이것은 HTML 소스로 해석 되므로 스타일링을 포함하여 HTML 언어 요소를 포함할 수도 있습니다.css매개변수는 추가 스타일링 지시사항을 전달하는 데 사용할 수 있습니다.자동 줄 바꿈은 단어 경계에서 생성됩니다. “소프트 하이픈” 문자
"­"(또는­)는 하이픈을 유발하고 줄 바꿈을 유발할 수도 있습니다. 그러나 강제 줄 바꿈은 HTML 태그<br>를 통해서만 달성할 수 있습니다 -\n은 무시되고 공백처럼 처리됩니다.이 메서드로 다음을 달성할 수 있습니다:
굵게, 기울임꼴, 텍스트 색상, 텍스트 정렬, 글꼴 크기 또는 글꼴 전환과 같은 스타일링 효과.
텍스트는 임의의 언어를 포함할 수 있습니다 – 오른쪽에서 왼쪽 언어를 포함하여.
Devanagari 및 아시아의 여러 다른 스크립트는 두 개 이상의 유니코드가 함께 하나의 글리프를 생성하는 매우 복잡한 합자 시스템을 가지고 있습니다. Story는 이러한 것들을 처리하고 올바른 출력을 생성하기 위해 소프트웨어 패키지 HarfBuzz 를 사용합니다.
HTML 태그
<img>를 통해 이미지를 포함 할 수도 있습니다 – Story는 적절한 레이아웃을 처리합니다. 이것은Page.insert_image()와 비교하여 이미지를 삽입하는 대안입니다.HTML 테이블(태그
<table>)은 텍스트에 포함될 수 있으며 적절히 처리됩니다.링크가 있으면 자동으로 생성됩니다.
콘텐츠가 사각형에 맞지 않으면 개발자는 두 가지 선택이 있습니다:
또는 이것에 대해 알림만 받습니다(다른 텍스트 상자 삽입 메서드와 마찬가지로 no-op를 수락),
또는 (
scale_low=0- 기본값) 콘텐츠가 맞을 때까지 축소합니다.
- 매개변수:
rect (rect_like) – 텍스트를 받을 페이지의 사각형.
text (str,Story) – 작성할 텍스트. 일반 텍스트와 스타일링 지시사항이 있는 HTML 태그의 혼합을 포함할 수 있습니다. 또는 Story 객체를 지정할 수 있습니다(이 경우 내부 Story 생성 단계가 생략됨). Story는 필요한 모든 스타일링과 Archive 정보로 생성되어야 합니다.
css (str) – 추가 CSS 지시사항을 포함하는 선택적 문자열.
text가 Story이면 이 매개변수는 무시됩니다.scale_low (float) – 필요한 경우 콘텐츠가 대상 사각형에 맞을 때까지 축소합니다. 이것은 축소 제한을 설정합니다. 기본값은 0이며 제한이 없습니다. 값 1은 축소가 허용되지 않음을 의미합니다. 예를 들어 값 0.2는 최대 80% 축소를 의미합니다.
archive (Archive) – 이미지나 비표준 글꼴을 찾을 위치를 가리키는 Archive 객체.
text가 이미지나 비표준 글꼴을 참조하면 이 매개변수가 필요합니다.text가 Story이면 이 매개변수는 무시됩니다.rotate (int) –
값 0, 90, 180, 270 중 하나. 이것에 따라 텍스트가 채워집니다:
0: 왼쪽 위에서 오른쪽 아래로.
90: 왼쪽 아래에서 오른쪽 위로.
180: 오른쪽 아래에서 왼쪽 위로.
270: 오른쪽 위에서 왼쪽 아래로.

oc (int) –
OCG/OCMD의 xref 또는 0. 자세한 내용은Page.show_pdf_page()를 참조하세요.opacity (float) – 콘텐츠의 채우기 및 획 불투명도를 설정합니다.
0 <= opacity < 1값만 고려됩니다.overlay (bool) – 텍스트를 다른 콘텐츠 앞에 배치합니다. 자세한 내용은
Page.show_pdf_page()를 참조하세요.
- 반환:
부동소수점 튜플
(spare_height, scale).spare_height: 텍스트 아래 Rect 에 남은 공간의 (양수) 높이, 또는 맞추지 못하면 -1.
scale: 필요한 스케일링;
0 < scale <= 1. 맞추지 못하면scale_low가 됩니다.
레시피의 이 섹션에 있는 예제를 참조하세요: HTML 텍스트로 상자 채우기 방법.
Show/hide history
v1.26.5에서 새로 추가됨:
긴 단어에 맞추기 위해 추가 스케일링을 수행합니다.
성공하고 축소한 경우, 반환된
spare_height는 이제 일반적으로 0으로 고정되는 대신 양수가 됩니다. 최종 rect의 높이가 일반적으로 글꼴 줄 높이의 정확한 배수가 아니기 때문입니다.
v1.23.8에서 새로 추가됨: rebased-only.
v1.23.9에서 새로 추가됨:
opacity매개변수.
그리기 메서드
- draw_line(p1, p2, color=(0,), width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: p1 에서 p2 로 선을 그립니다 (
point_likes).Shape.draw_line()참조.Show/hide history
v1.18.4에서 변경됨
- draw_zigzag(p1, p2, breadth=2, color=(0,), width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: p1 에서 p2 로 지그재그 선을 그립니다 (
point_likes).Shape.draw_zigzag()참조.Show/hide history
v1.18.4에서 변경됨
- draw_squiggle(p1, p2, breadth=2, color=(0,), width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: p1 에서 p2 로 구불구불한(물결 모양, 파형) 선을 그립니다 (
point_likes).Shape.draw_squiggle()참조.Show/hide history
v1.18.4에서 변경됨
- draw_circle(center, radius, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: 중심(
point_like)을 기준으로 반지름이 radius 인 원을 그립니다.Shape.draw_circle()참조.Show/hide history
v1.18.4에서 변경됨
- draw_oval(quad, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: 주어진
rect_like또는quad_like내에 타원(ellipse)을 그립니다.Shape.draw_oval()참조.Show/hide history
v1.18.4에서 변경됨
- draw_sector(center, point, angle, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, fullSector=True, overlay=True, closePath=False, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: 원형 섹터를 그립니다. 선택적으로 호를 원의 중심에 연결합니다(파이 조각처럼).
Shape.draw_sector()참조.Show/hide history
v1.18.4에서 변경됨
- draw_polyline(points, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, closePath=False, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용:
point_likes의 시퀀스로 정의된 여러 연결된 라인을 그립니다.Shape.draw_polyline()참조.Show/hide history
v1.18.4에서 변경됨
- draw_bezier(p1, p2, p3, p4, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, closePath=False, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: 제어점 p2 및 p3 를 사용하여 p1 에서 p4 까지의 3차 Bézier 곡선을 그립니다(모두
point_likes).Shape.draw_bezier()참조.Show/hide history
v1.18.4에서 변경됨
- draw_curve(p1, p2, p3, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, closePath=False, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: 이것은 draw_bezier() 의 특수한 경우입니다.
Shape.draw_curve()참조.Show/hide history
v1.18.4에서 변경됨
- draw_rect(rect, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, radius=None, oc=0)¶
PDF 전용: 사각형을 그립니다.
Shape.draw_rect()참조.Show/hide history
v1.18.4에서 변경됨
v1.22.0에서 변경됨: radius 매개변수 추가.
- draw_quad(quad, color=(0,), fill=None, width=1, dashes=None, lineCap=0, lineJoin=0, overlay=True, morph=None, stroke_opacity=1, fill_opacity=1, oc=0)¶
PDF 전용: 사각형을 그립니다.
Shape.draw_quad()참조.Show/hide history
v1.18.4에서 변경됨
- insert_font(fontname='helv', fontfile=None, fontbuffer=None, set_simple=False, encoding=TEXT_ENCODING_LATIN)¶
PDF 전용: 텍스트 출력 메서드에서 사용할 새 글꼴을 추가하고
xref를 반환합니다. 파일에 아직 없으면 글꼴 정의가 추가됩니다. 내장Base14_Fonts및 “reserved” 글꼴 이름을 통한 CJK 글꼴이 지원됩니다. 글꼴은 파일 경로 또는 글꼴 파일 이미지를 포함하는 메모리 영역으로 제공할 수도 있습니다.- 매개변수:
fontname (str) –
이 페이지에서 텍스트를 출력할 때 이 글꼴을 참조하는 데 사용할 이름. 일반적으로 여기서는 “자유로운” 선택이 가능합니다(하지만 유효한 PDF 이름을 만드는 것에 대한 공식 설명은 Adobe PDF 참조, 16페이지, 섹션 7.3.5 참조). 그러나
Base14_Fonts또는 CJK 글꼴 중 하나와 일치하면 fontfile 및 fontbuffer 는 무시됩니다.즉, fontfile / fontbuffer 를 통해 글꼴을 삽입하고 동시에 예약된 fontname 을 지정할 수 없습니다.
참고
예약된 글꼴 이름은 대소문자를 혼합하여 지정할 수 있으며 여전히 올바른 내장 글꼴 정의와 일치합니다: “helv”, “Helv”, “HELV”, “Helvetica” 등의 글꼴 이름은 모두 동일한 글꼴 정의 “Helvetica”로 이어집니다. 하지만 Page 관점에서 이것들은 다른 참조 입니다. 페이지에서 동일한 글꼴의 서로 다른 encoding 변형(라틴어, 그리스어, 키릴 문자)을 사용할 때 이 사실을 활용할 수 있습니다.
fontfile (str) – 글꼴 파일의 경로. 사용하는 경우 fontname 은 모든 예약된 이름과 달라야 합니다.
fontbuffer (bytes/bytearray) – 글꼴 파일의 메모리 이미지. 사용하는 경우 fontname 은 모든 예약된 이름과 달라야 합니다. 이 매개변수는 일반적으로 Font 를 통해 지원/사용 가능한 글꼴에 대해
Font.buffer와 함께 사용됩니다.set_simple (int) – fontfile / fontbuffer 경우에만 적용: “simple” 글꼴로 처리하도록 강제합니다. 즉, 255까지의 문자 코드만 사용하는 글꼴입니다.
encoding (int) – “Helvetica”, “Courier”, “Times” 세트의
Base14_Fonts에만 적용됩니다. 사용 가능한 인코딩 중 하나를 선택하세요: 라틴어(0), 키릴 문자(2) 또는 그리스어(1). “Symbol” 및 “ZapfDingBats”의 경우 기본값(0 = 라틴어)만 사용하세요.
- 반환 타입:
int
- 반환:
설치된 글꼴의
xref.
참고
내장 글꼴은 글꼴 파일 포함을 필요로 하지 않습니다. 따라서 결과 PDF 파일은 작게 유지됩니다. 그러나 PDF 뷰어 소프트웨어는 적절한 외관을 생성할 책임이 있으며, 각각이 이를 수행하는지 여부나 방법에 차이 가 있습니다. 이것은 특히 CJK 글꼴에 해당합니다. 하지만 Symbol과 ZapfDingbats도 일부 경우에 잘못 처리됩니다. 다음은 Font Names 및 해당 설치된 Base Font 이름입니다:
Base-14 Fonts [1]
Font Name
Installed Base Font
Comments
helv
Helvetica
normal
heit
Helvetica-Oblique
italic
hebo
Helvetica-Bold
bold
hebi
Helvetica-BoldOblique
bold-italic
cour
Courier
normal
coit
Courier-Oblique
italic
cobo
Courier-Bold
bold
cobi
Courier-BoldOblique
bold-italic
tiro
Times-Roman
normal
tiit
Times-Italic
italic
tibo
Times-Bold
bold
tibi
Times-BoldItalic
bold-italic
symb
Symbol
zadb
ZapfDingbats
CJK Fonts [2] (중국, 일본, 한국)
Font Name
Installed Base Font
Comments
china-s
Heiti
간체 중국어
china-ss
Song
간체 중국어 (세리프)
china-t
Fangti
번체 중국어
china-ts
Ming
번체 중국어 (세리프)
japan
Gothic
일본어
japan-s
Mincho
일본어 (세리프)
korea
Dotum
한국어
korea-s
Batang
한국어 (세리프)
- insert_image(rect, *, alpha=-1, filename=None, height=0, keep_proportion=True, mask=None, oc=0, overlay=True, pixmap=None, rotate=0, stream=None, width=0, xref=0)¶
PDF 전용: 주어진 사각형 내에 이미지를 배치합니다. 이미지는 이미 PDF에 존재하거나 픽스맵, 파일 또는 메모리 영역에서 가져올 수 있습니다.
- 매개변수:
rect (rect_like) – 이미지를 배치할 위치. 유한하고 비어 있지 않아야 합니다.
alpha (int) – 더 이상 사용되지 않으며 무시됩니다.
filename (str) – 이미지 파일 이름(MuPDF에서 지원하는 모든 형식 – 지원되는 입력 이미지 형식 참조).
height (int)
keep_proportion (bool) – 이미지의 종횡비를 유지합니다.
mask (bytes,bytearray,io.BytesIO) – 메모리의 이미지 – 기본 이미지의 이미지 마스크(알파 값)로 사용됩니다. 지정된 경우 기본 이미지는 파일 이름 또는 스트림으로 제공되어야 하며, 이미 마스크가 있는 이미지가 아니어야 합니다.
oc (int) – (
xref) 이미지 가시성을 이OCG또는OCMD에 종속시킵니다. 여러 번 삽입 시 첫 번째 이후에는 무시됩니다. 이 속성은 생성된 PDF 이미지 객체와 함께 저장되므로 PDF 전체에서 이미지 가시성을 제어합니다.overlay – 공통 매개변수 참조.
pixmap (Pixmap) – 이미지를 포함하는 픽스맵.
rotate (int) – 이미지를 회전시킵니다. 90도의 정수 배여야 합니다. 양수 값은 반시계 방향으로 회전합니다. 임의의 각도로 회전이 필요한 경우 먼저 이미지를 PDF로 변환(
Document.convert_to_pdf())한 다음Page.show_pdf_page()를 사용하는 것을 고려하세요.stream (bytes,bytearray,io.BytesIO) – 메모리의 이미지(MuPDF에서 지원하는 모든 형식 – 지원되는 입력 이미지 형식 참조).
width (int)
xref (int) – PDF에 이미 존재하는 이미지의
xref. 주어진 경우filename, Pixmap,stream,alpha및mask매개변수는 무시됩니다. 페이지는 기존 이미지에 대한 참조만 받습니다.
- 반환:
삽입된 이미지의
xref. 이미지를 다시 삽입하는 경우xref인수로 사용하면 성능이 크게 향상될 수 있습니다.
이 예제는 문서의 모든 페이지에 동일한 이미지를 배치합니다:
>>> doc = pymupdf.open(...) >>> rect = pymupdf.Rect(0, 0, 50, 50) # put thumbnail in upper left corner >>> img = open("some.jpg", "rb").read() # an image file >>> img_xref = 0 # first execution embeds the image >>> for page in doc: img_xref = page.insert_image(rect, stream=img, xref=img_xref, 2nd time reuses existing image ) >>> doc.save(...)
참고
이 메서드는 동일한 이미지의 여러 번 삽입(위 예제와 같이)을 감지하고 첫 번째 실행 시에만 데이터를 저장합니다. 기본값
xref=0을 사용하는 경우에도 이것은 사실입니다(성능은 낮지만).이 메서드는 파일을 열기 전에 동일한 이미지가 이미 파일의 일부였는지 감지할 수 없습니다.
이 메서드를 사용하여 저작권 표시나 워터마크와 같은 페이지의 배경 또는 전경 이미지를 제공할 수 있습니다. 워터마크는 전경에 배치하는 경우 투명한 이미지가 필요하다는 것을 기억하세요…
이미지는 압축되지 않은 상태로 삽입될 수 있습니다(예: Pixmap 이 사용되거나 이미지에 알파 채널이 있는 경우). 따라서 파일을 저장할 때
deflate=True를 사용하는 것을 고려하세요. 또한 투명도가 관련된 경우에도 이미지 크기를 제어하는 방법이 있습니다. PDF 페이지에 이미지 추가 방법 를 참조하세요.이미지는 원본 품질 수준으로 PDF에 저장됩니다. 이것은 디스플레이에 필요한 것보다 훨씬 좋을 수 있습니다. 삽입 전에 이미지 크기를 줄이는 것을 고려하세요 – 예를 들어 픽스맵 옵션을 사용한 다음 축소하거나 크기를 줄입니다(Pixmap 장 참조). PIL 메서드
Image.thumbnail()도 이 목적에 사용할 수 있습니다. 파일 크기 절감이 매우 클 수 있습니다.여러 페이지에 동일한 이미지를 표시하는 또 다른 효율적인 방법은 다른 메서드입니다:
show_pdf_page(). 해당 메서드에 사용할 수 있는 중간 PDF를 얻는 방법은Document.convert_to_pdf()를 참조하세요.
Show/hide history
v1.14.1에서 변경됨: 기본적으로 이미지는 종횡비를 유지합니다.
v1.14.11에서 변경됨:
keep_proportion,rotate인수 추가.v1.14.13에서 변경됨:
이미지는 이제 항상 사각형 내에서 중앙 에 배치됩니다. 즉, 이미지와 사각형의 중심이 같습니다.
stream을io.BytesIO로 지원 추가.
v1.17.6에서 변경됨: 삽입 사각형이 더 이상 페이지의
Page.cropbox[#f5]_와 비어 있지 않은 교집합을 가질 필요가 없습니다.v1.18.1에서 변경됨:
mask인수 추가.v1.18.3에서 변경됨:
oc인수 추가.v1.18.13에서 변경됨:
v1.19.3에서 변경됨:
alpha인수를 더 이상 사용하지 않고 무시합니다.
- replace_image(xref, filename=None, pixmap=None, stream=None)¶
xref의 이미지를 다른 이미지로 교체합니다.
- 매개변수:
인수
filename, Pixmap,stream은Page.insert_image()와 동일한 의미이며, 특히 이 중 정확히 하나를 제공해야 합니다.이것은 전역 교체 입니다: 새 이미지는 파일 전체에서 이전 이미지가 표시된 모든 위치에 표시됩니다.
이 메서드는 주로 기술적 목적으로 존재합니다. 일반적인 사용 사례에는 낮은 해상도, 컬러 대신 그레이스케일 등과 같은 더 작은 버전으로 큰 이미지를 교체하거나 투명도를 변경하는 것이 포함됩니다.
Show/hide history
v1.21.0의 새로운 기능
- delete_image(xref)¶
xref의 이미지를 삭제합니다. 이것은 약간 오해의 소지가 있습니다: 실제로는 위의
Page.replace_image()를 사용하여 작은 투명한 Pixmap 으로 교체됩니다. 그러나 시각적 효과는 동일합니다.- 매개변수:
xref (int) – 이미지의
xref.
이것은 전역 교체 입니다: 이미지는 파일 전체에서 이전 이미지가 표시된 모든 위치에서 사라집니다.
Page.get_images(),Page.get_image_info()또는Page.get_text()와 같은 메서드로 페이지의 이미지를 검사/추출하는 경우, 교체된 “dummy” 이미지는(45, 47, 1, 1, 8, 'DeviceGray', '', 'Im1', 'FlateDecode')와 같이 감지되며 페이지에서 동일한 경계 상자를 “덮는” 것처럼 보입니다.Show/hide history
v1.21.0의 새로운 기능
- get_text(option, *, clip=None, flags=None, textpage=None, sort=False, delimiters=None)¶
다양한 형식으로 페이지의 콘텐츠를 검색합니다.
flags값에 따라 텍스트, 이미지 및 기타 여러 객체 타입이 포함될 수 있습니다. 이 메서드는 출력 옵션opt를 다음과 같이 선택하여 여러 TextPage 메서드에 대한 래퍼입니다:“text” –
TextPage.extractTEXT(), 기본값. 항상 텍스트만 포함합니다.“blocks” –
TextPage.extractBLOCKS(). 텍스트를 포함하며 이미지 메타 정보를 포함할 수 있습니다.“words” –
TextPage.extractWORDS(). 항상 텍스트만 포함합니다.“html” –
TextPage.extractHTML(). 텍스트와 이미지를 포함할 수 있습니다.“xhtml” –
TextPage.extractXHTML(). 텍스트와 이미지를 포함할 수 있습니다.“xml” –
TextPage.extractXML(). 항상 텍스트만 포함합니다.“dict” –
TextPage.extractDICT(). 텍스트와 이미지를 포함할 수 있습니다.“json” –
TextPage.extractJSON(). 텍스트와 이미지를 포함할 수 있습니다.“rawdict” –
TextPage.extractRAWDICT(). 텍스트와 이미지를 포함할 수 있습니다.“rawjson” –
TextPage.extractRAWJSON(). 텍스트와 이미지를 포함할 수 있습니다.
- 매개변수:
opt (str) – 요청된 형식을 나타내는 문자열, 위 중 하나. 대소문자 혼합이 지원됩니다. 철자가 잘못된 경우 옵션 “text”가 조용히 가정됩니다.
clip (rect-like) – 추출을 이 사각형으로 제한합니다.
None(기본값)인 경우 페이지의 보이는 부분이 사용됩니다.clip에 완전히 포함되지 않은 모든 콘텐츠(텍스트, 이미지)는 완전히 생략됩니다. 클리핑을 완전히 피하려면clip=pymupdf.INFINITE_RECT()를 사용하세요. 그럴 때만 추출에 모든 항목이 포함됩니다. 이 매개변수는 옵션 “html”, “xhtml”, “xml”에 효과가 없습니다.flags (int) – 이미지를 포함할지 여부 또는 공백 및
ligatures에 대해 텍스트를 처리하는 방법을 제어하는 표시기 비트. 사용 가능한 표시기는 글꼴 속성 를 참조하고 기본 설정은 텍스트 추출 플래그 기본값 를 참조하세요. (v1.16.2의 새로운 기능)textpage – 이전에 생성된 TextPage 를 사용합니다. 이것은 실행 시간을 매우 크게 줄입니다: 추출 옵션에 따라 50% 이상 최대 95%까지. 지정된 경우 ‘flags’ 및 ‘clip’ 인수는 무시됩니다. 이는 textpage 전용 속성이기 때문입니다. 생략하면 새로운 임시 textpage가 생성됩니다.
sort (bool) – 세로 좌표, 그 다음 가로 좌표로 출력을 정렬합니다. 많은 경우 이것은 “자연스러운” 읽기 순서를 생성하는 데 충분해야 합니다. (X)HTML 및 XML에는 효과가 없습니다. 옵션 “blocks”, “dict”, “json”, “rawdict”, “rawjson”의 경우 각 블록 bbox의 좌표
(y1, x0)로 정렬이 수행됩니다. 옵션 “words” 및 “text”의 경우 텍스트 라인은 읽기 순서와 문서의 모양을 따르도록 완전히 재구성됩니다 – 이것은 어느 정도 원래 레이아웃을 설정합니다.delimiters (str) – “words” 출력 옵션과 함께 이러한 문자를 추가 단어 구분자로 사용합니다(그렇지 않으면 무시됨). 기본적으로 모든 공백(줄바꿈 없는 공백
0xA0포함)은 단어의 시작과 끝을 나타냅니다. 이제 이것을 유발하는 더 많은 문자를 지정할 수 있습니다. 예를 들어 기본값은"john.doe@outlook.com"을 하나의 단어로 반환합니다.delimiters="@."를 지정하면 네 개의 단어"john","doe","outlook","com"이 반환됩니다. 다른 가능한 사용 사례에는 구두점 문자 무시delimiters=string.punctuation가 포함됩니다. “word” 문자열은 구분 문자를 포함하지 않습니다. (v1.23.5의 새로운 기능)
- 반환 형식:
str, list, dict
- 반환:
문자열, 리스트 또는 딕셔너리로 된 페이지의 콘텐츠. 자세한 내용은 해당 TextPage 메서드를 참조하세요.
참고
이 메서드를 지원되는 모든 문서 타입 에서 TEXT, HTML, XHTML 또는 XML 문서 중 하나로 변환하는 **문서 변환 도구**로 사용할 수 있습니다.
clip 매개변수를 통한 텍스트 포함은 문자 단위로 결정됩니다: 문자의 bbox가
clip에 포함되면 출력의 일부가 됩니다. 이것은 삭제 주석에 사용되는 알고리즘과 다릅니다: 문자의 bbox가 삭제 주석과 교차하면 제거됩니다.
Show/hide history
v1.19.0에서 변경됨: TextPage 매개변수 추가
v1.19.1에서 변경됨:
sort매개변수 추가v1.19.6에서 변경됨: 메서드별 기본 플래그를 정의하는 새로운 상수 추가
v1.23.5에서 변경됨:
delimiters매개변수 추가v1.24.11에서 변경됨: “text” 및 “words”에 대한
sort_True의 효과를 자연스러운 읽기 순서를 밀접하게 따르도록 변경.
- get_textbox(rect, textpage=None)¶
사각형에 포함된 텍스트를 검색합니다.
- 매개변수:
rect (rect-like) – 사각형과 유사한.
textpage – 사용할 TextPage. 생략하면 새로운 임시 textpage가 생성됩니다.
- 반환:
필요한 경우 줄바꿈이 삽입된 문자열. 전용 코드를 기반으로 합니다(v1.19.0에서 변경됨). 일반적인 사용 사례는
Page.search_for()의 결과를 확인하는 것입니다:>>> rl = page.search_for("currency:") >>> page.get_textbox(rl[0]) 'Currency:' >>>
Show/hide history
v1.17.7의 새로운 기능
v1.19.0에서 변경됨: TextPage 매개변수 추가
- get_textpage(clip=None, flags=3)¶
페이지에 대한 TextPage 생성.
- 매개변수:
flags (int) – 후속 텍스트 추출 및 검색에 사용 가능한 콘텐츠를 제어하는 표시기 비트 –
Page.get_text()의 매개변수 참조.clip (rect-like) – 추출된 텍스트를 이 영역으로 제한합니다. (v1.17.7의 새로운 기능)
- 반환:
Show/hide history
v1.16.5의 새로운 기능
v1.17.7에서 변경됨:
clip매개변수 도입.
- get_textpage_ocr(flags=3, language='eng', dpi=72, full=False, tessdata=None)¶
Optical Character Recognition (OCR) technology can be used to extract text data for pages where text is in raster image or vector graphic format. Use this method to OCR a page for subsequent text extraction.
This method returns a TextPage for the page that includes OCRed text. MuPDF will invoke Tesseract-OCR if this method is used.
- 매개변수:
flags (int) – 후속 테스트 추출 및 검색에 사용 가능한 콘텐츠를 제어하는 표시기 비트 –
Page.get_text()의 매개변수 참조.language (str) – 예상되는 언어. 여러 언어가 예상되는 경우 “+”로 구분된 값을 사용하세요. 영어와 스페인어의 경우 “eng+spa”.
dpi (int) – 인치당 도트 단위의 원하는 해상도. 인식 품질(및 실행 시간)에 영향을 줍니다.
full (bool) – whether to OCR the full page, or only page areas that contain no legible text.
tessdata (str) – The name of Tesseract’s language support folder
tessdata. If omitted, the name is determined using functionget_tessdata().
참고
This method does not support a clip parameter – OCR (full or partial) will always happen for the complete page rectangle.
- 반환:
TextPage. 실행 시간이
Page.get_textpage()보다 훨씬 길 수 있습니다.
For
full=TrueOCR, all text will have the font “GlyphLessFont” from Tesseract. In case of partial OCR (full=False), legible normal text will keep its properties, and only recognized text will have the GlyphLessFont.Recognized / OCR text will follow (legible) normal text for partial OCR and will thus not be in reading order. Establishing reading order is – as always – your responsibility.
참고
Text extraction results, including any OCR, are stored in the returned TextPage. To access them, you must use the
textpageparameter in all subsequent text extraction and search methods.이 Jupyter notebook 은 OCR textpage 사용 예제를 안내합니다.
Show/hide history
v.1.19.0의 새로운 기능
v1.19.1에서 변경됨: 전체 및 부분 페이지 OCR 지원.
changed in v1.27.2: For partial OCR, all page areas outside legible text are now OCRed, not just those within images. This means that OCR will now also be performed for vector graphics, and for text containing illegible characters.
- get_drawings(extended=False)¶
페이지의 벡터 그래픽을 반환합니다. 이것들은 색상, 투명도, 선 너비 및 파선 등의 속성을 포함하여 선, 사각형, 쿼드 또는 곡선을 그리는 명령입니다. 대체 용어는 “line art” 및 “drawings”입니다.
- 반환:
딕셔너리 목록. 각 딕셔너리 항목은 함께 속하는 하나 이상의 단일 그리기 명령을 포함합니다: 동일한 속성(색상, 파선 등)을 가집니다. 이것은 PDF에서 “path” 라고 하므로 여기서도 그 이름을 채택했지만, 이 메서드는 모든 문서 타입에 작동합니다.
채우기, 스트로크 및 채우기-스트로크 경로에 대한 경로 딕셔너리는 Shape 클래스와 호환되도록 설계되었습니다. 다음 키가 있습니다:
Key
Value
closePath
Shape 의 매개변수와 동일합니다.
color
스트로크 색상(Shape 참조).
dashes
파선 지정(Shape 참조).
even_odd
영역 겹침의 채우기 색상 – Shape 의 매개변수와 동일합니다.
fill
채우기 색상(Shape 참조).
items
그리기 명령 목록: 선, 사각형, 쿼드 또는 곡선.
lineCap
숫자 3-튜플, Shape 와 함께 출력에서 최대값을 사용합니다.
lineJoin
Shape 의 매개변수와 동일합니다.
fill_opacity
채우기 색상 투명도(Shape 참조). (v1.18.17의 새로운 기능)
stroke_opacity
스트로크 색상 투명도(Shape 참조). (v1.18.17의 새로운 기능)
rect
이 경로가 덮는 페이지 영역. 정보 전용.
layer
적용 가능한 Optional Content Group의 이름. (v1.22.0의 새로운 기능)
level
extended=True인 경우 계층 수준. (v1.22.0의 새로운 기능)seqno
페이지 외관을 구축할 때의 명령 번호. (v1.19.0의 새로운 기능)
type
이 경로의 타입. (v1.18.17의 새로운 기능)
width
스트로크 선 너비. (Shape 참조).
키
"opacity"는 새로운 키"fill_opacity"및"stroke_opacity"로 대체되었습니다. 이것은 이제Shape.finish()의 해당 매개변수와 호환됩니다. (v1.18.17에서 변경됨)그룹 또는 클립이 아닌 경로의 경우 키
"type"은 다음 값 중 하나를 가집니다:“f” – 이것은 채우기 전용 경로입니다. 이 작업과 관련된 키-값만 의미가 있으며, 적용할 수 없는 항목은
None값으로 존재합니다:"color","lineCap","lineJoin","width","closePath","dashes"이며 무시해야 합니다.“s” – 이것은 스트로크 전용 경로입니다. 이전과 유사하게 키
"fill"은None값으로 존재합니다.“fs” – 이것은 결합된 채우기 및 스트로크 작업을 수행하는 경로입니다.
path["items"]의 각 항목은 다음 중 하나입니다:("l", p1, p2)- p1에서 p2로의 선(Point 객체).("c", p1, p2, p3, p4)- p1에서 p4로의 3차 Bézier 곡선(p2 및 p3는 제어점). 모든 객체는 Point 타입입니다.("re", rect, orientation)- Rect. 동일한 경로 내의 여러 사각형이 이제 감지됩니다(v1.18.17에서 변경됨). 정수orientation은 1 또는 -1로, 둘러싸인 영역이 왼쪽으로 회전(1 = 반시계 방향) 또는 오른쪽으로 회전하는지 나타냅니다 [7] (v1.19.2에서 변경됨).("qu", quad)- Quad. 3개 또는 4개의 연속 선이 실제로 Quad 를 나타내는 것으로 감지됩니다(v1.19.2에서 변경됨). (v1.18.17의 새로운 기능)
Shape 클래스를 사용하면 일반적이고 너무 복잡하지 않은 상황에서 별도의 (PDF) 페이지에서 원본 그림을 높은 충실도로 재현할 수 있어야 합니다. 제한 사항에 대한 다음 주석을 참조하세요. 코딩 초안은 How to Extract Drawings 에서 찾을 수 있습니다.
extended=True를 지정하면 출력이 크게 변경됩니다. 가장 중요한 것은 새로운 딕셔너리 타입 “clip” 및 “group”이 존재한다는 것입니다. 모든 경로는 이제 계층 수준인 새로운 정수 키 “level”로 인코딩된 계층 구조로 구성됩니다. 각 그룹 또는 클립은 더 큰 level 값을 가진 모든 후속 경로에 적용되는 새로운 계층을 설정합니다. (v1.22.0의 새로운 기능)이전 항목보다 작은 level 값을 가진 경로는 (최소한) 이전 계층 수준의 범위를 종료합니다. 이전 클립과 동일한 level을 가진 “clip” 경로는 해당 클립의 범위를 종료합니다. 그룹에도 동일하게 적용됩니다. 이것은 예제로 가장 잘 설명됩니다:
+------+------+--------+------+--------+ | line | lvl0 | lvl1 | lvl2 | lvl3 | +------+------+--------+------+--------+ | 0 | clip | | | | | 1 | | fill | | | | 2 | | group | | | | 3 | | | clip | | | 4 | | | | stroke | | 5 | | | fill | | ends scope of clip in line 3 | 6 | | stroke | | | ends scope of group in line 2 | 7 | | clip | | | | 8 | fill | | | | ends scope of line 0 +------+------+--------+------+--------+
라인 0의 클립은 라인 7을 포함한 라인에 적용됩니다. 라인 2의 그룹은 라인 3부터 5까지에 적용되고, 라인 3의 클립은 라인 4에만 적용됩니다.
라인 4의 “stroke”는 라인 2의 “group”과 라인 3의 “clip”(차례로 라인 0 클립의 하위 집합)의 제어 하에 있습니다.
“clip” 딕셔너리. 후속 딕셔너리가 더 큰 “level” 값을 가진 한 그 값(가장 중요한 “scissor”)은 유효/적용됩니다.
Key
Value
closePath
“stroke” 또는 “fill” 딕셔너리와 동일
even_odd
“stroke” 또는 “fill” 딕셔너리와 동일
items
“stroke” 또는 “fill” 딕셔너리와 동일
rect
“stroke” 또는 “fill” 딕셔너리와 동일
layer
“stroke” 또는 “fill” 딕셔너리와 동일
level
“stroke” 또는 “fill” 딕셔너리와 동일
scissor
클립 사각형
type
“clip”
“group” 딕셔너리. 후속 딕셔너리가 더 큰 “level” 값을 가진 한 그 값은 유효(적용)합니다. 동일하거나 더 낮은 level을 가진 딕셔너리는 이 그룹을 종료합니다.
Key
Value
rect
“stroke” 또는 “fill” 딕셔너리와 동일
layer
“stroke” 또는 “fill” 딕셔너리와 동일
level
“stroke” 또는 “fill” 딕셔너리와 동일
isolated
(bool) 이 그룹이 격리되었는지 여부
knockout
(bool) 이것이 “Knockout Group”인지 여부
blendmode
BlendMode의 이름, 기본값은 “Normal”
opacity
[0, 1] 범위의 Float 값.
type
“group”
참고
이 메서드는
Page.get_cdrawings()의 출력을 기반으로 합니다 – 이것은 훨씬 빠르지만 출력을 처리하는 데 다소 더 많은 주의가 필요합니다.Show/hide history
v1.18.0의 새로운 기능
v1.18.17에서 변경됨
v1.19.0에서 변경됨: “seqno” 키 추가, “clippings” 키 제거
v1.19.1에서 변경됨: “color” / “fill” 키는 이제 항상 RGB 튜플이거나
None입니다. 이것은 이국적인 색 공간으로 인한 문제를 해결합니다.v1.19.2에서 변경됨: “re” 항목이 덮는 영역의 “orientation” 에 대한 표시기 추가.
v1.22.0에서 변경됨: 경로의 Optional Content Group 이름(또는
None)을 포함하는 새로운 키"layer"추가.v1.22.0에서 변경됨: 클리핑 및 그룹 경로도 반환하도록
extended매개변수 추가.
- get_cdrawings(extended=False)¶
페이지의 벡터 그래픽을 추출합니다. 다음 기술적 차이점을 제외하고는
Page.get_drawings()와 기능적으로 동일하지만 훨씬 빠릅니다:각 경로 타입은 관련 키만 포함합니다. 예를 들어 stroke 경로에는
"fill"색상 키가 없습니다.Page.get_drawings()메서드의 주석을 참조하세요.좌표는 Point, Rect, Quad 객체가 아닌
point_like,rect_like,quad_like튜플 로 제공됩니다.
성능이 중요한 경우 이 메서드 사용을 고려하세요: 1.18.17 이전 버전과 비교하여 응답 시간이 훨씬 짧아집니다. 이전에 2초가 걸렸던 페이지가 이 메서드로는 200ms만 필요합니다.
Show/hide history
v1.18.17의 새로운 기능
v1.19.0에서 변경됨: “clippings” 키 제거, “seqno” 키 추가.
v1.19.1에서 변경됨: 항상 RGB 색상 튜플 생성.
v1.22.0에서 변경됨: 경로의 Optional Content Group 이름(또는
None)을 포함하는 새로운 키"layer"추가.v1.22.0에서 변경됨: 클리핑 경로도 반환하도록
extended매개변수 추가.
- get_fonts(full=False)¶
PDF 전용: 페이지에서 참조하는 글꼴 목록을 반환합니다.
Document.get_page_fonts()의 래퍼입니다.
- get_images(full=False)¶
PDF 전용: 페이지에서 참조하는 이미지 목록을 반환합니다.
Document.get_page_images()의 래퍼입니다.
- get_image_info(hashes=False, xrefs=False)¶
페이지에 표시된 모든 이미지에 대한 메타 정보 딕셔너리 목록을 반환합니다. 모든 문서 타입에서 작동합니다.
- 매개변수:
hashes (bool) – 발견된 각 이미지의 MD5 해시코드를 계산하여 이미지 중복을 식별할 수 있습니다. 이것은 출력에 키
"digest"를 추가하며, 그 값은 16바이트bytes객체입니다. (v1.18.13의 새로운 기능)xrefs (bool) – PDF 전용. 각 이미지의
xref를 찾으려고 시도합니다.hashes=True를 의미합니다. 딕셔너리에"xref"키를 추가합니다. 찾을 수 없으면 값은 0이며, 이는 이미지가 “inline”이거나 어떤 이유로 xref를 감지할 수 없음을 의미합니다. xref가 있는 각 이미지에 대해 MD5 해시코드가 최소 두 번 계산되므로 이 옵션은 응답 시간이 길어집니다. (v1.18.13의 새로운 기능)
- 반환 형식:
list[dict]
- 반환:
동일한 이미지의 여러 발생은 항상 보고됩니다.
digest값을 비교하여 중복을 감지할 수 있습니다.
Show/hide history
v1.18.11의 새로운 기능
v1.18.13에서 변경됨: 이미지 MD5 해시코드 계산 및
xref검색 추가.
- get_xobjects()¶
PDF 전용: 페이지에서 참조하는 Form XObjects 목록을 반환합니다.
Document.get_page_xobjects()의 래퍼입니다.
- get_image_rects(item, transform=False)¶
PDF 전용: 삽입된 이미지의 경계 상자와 변환 행렬을 반환합니다. 다음 차이점이 있는
Page.get_image_bbox()의 개선된 버전입니다:이미지가 어떻게 호출되는지(페이지 또는 Form XObjects 중 하나)에 대한 제한이 없습니다. 결과는 항상 완전하고 정확합니다.
결과는 transform 에 따라 Rect 또는 (Rect, Matrix) 객체 목록입니다. 각 목록 항목은 페이지에서 이미지의 한 위치를 나타냅니다. 여러 발생은
Page.get_image_bbox()로 감지되지 않을 수 있습니다.이 메서드는
xrefs=True로Page.get_image_info()를 호출하므로Page.get_image_bbox()보다 응답 시간이 현저히 깁니다.
- 매개변수:
item (list,str,int) –
Page.get_images()목록의 항목, 또는 해당 항목의 참조 이름 항목(item[7]), 또는 이미지xref.transform (bool) – 이미지 사각형을 페이지의 bbox로 변환하는 데 사용된 행렬도 반환합니다. true이면 튜플
(bbox, matrix)가 반환됩니다.
- 반환 형식:
list
- 반환:
페이지에서 각 이미지 발생에 대한 경계 상자 및 해당 변환 행렬. 항목이 페이지에 없으면 빈 목록
[]이 반환됩니다.
Show/hide history
v1.18.13의 새로운 기능
- get_image_bbox(item, transform=False)¶
PDF 전용: 삽입된 이미지의 경계 상자와 변환 행렬을 반환합니다.
- 매개변수:
item (list,str) – full=True 로 지정된
Page.get_images()목록의 항목, 또는 해당 항목의 참조 이름 항목(item[-3] 또는 각각 item[7]).transform (bool) – 이미지 사각형을 페이지의 bbox로 변환하는 데 사용된 행렬을 반환합니다(v1.18.11의 새로운 기능). 기본값은 bbox만입니다. true이면 튜플
(bbox, matrix)가 반환됩니다.
- 반환 형식:
- 반환:
the boundary box of the image – optionally also its transformation matrix.
Show/hide history
(v1.16.7에서 변경됨): 페이지가 실제로 이 이미지를 표시하지 않는 경우 이제 무한 사각형이 반환됩니다. 이전 버전에서는 예외가 발생했습니다. 형식적으로 잘못된 매개변수는 여전히 예외를 발생시킵니다.
(v1.17.0에서 변경됨): 페이지에서 직접 참조하는 이미지만 고려됩니다. 이것은 삽입된 PDF 페이지에 있는 이미지는 무시되고 예외가 발생함을 의미합니다.
(v1.18.5에서 변경됨): v1.17.0에서 도입된 제한 제거: 페이지의 이미지 목록의 모든 항목을 지정할 수 있습니다.
(v1.18.11에서 변경됨): 제한을 부분적으로 재도입: 페이지에서 직접 참조하거나 페이지에서 직접 참조하는 Form XObject에서 참조하는 이미지만 고려됩니다.
(v1.18.11에서 변경됨): 선택적으로 bbox와 함께 변환 행렬을 튜플
(bbox, transform)로 반환합니다.
참고
Page.get_images()가 페이지가 표시하지 않는 이미지인 “dead” 항목을 포함할 수 있음을 알아두세요. 이것은 오류가 아니라 PDF 작성자의 의도입니다. 이 경우 예외가 발생하지 않지만 무한 사각형이 반환됩니다. 이 메서드 전에Page.clean_contents()를 실행하여 이를 방지할 수 있습니다.이미지의 “변환 행렬”은 표현식
bbox / transform == pymupdf.Rect(0, 0, 1, 1)이 참인 행렬로 정의됩니다. 자세한 내용은 이미지 변환 행렬 을 참조하세요.
Show/hide history
v1.18.11에서 변경됨: 이미지 변환 행렬 반환
- get_svg_image(matrix=pymupdf.Identity, text_as_path=True)¶
페이지에서 SVG 이미지를 생성합니다. 현재는 전체 페이지 이미지만 지원됩니다.
- 매개변수:
matrix (matrix_like) – 행렬, 기본값은 Identity 입니다.
text_as_path (bool) – – 텍스트 표현 방식을 제어합니다.
True는 각 문자를 기본 그리기 명령 시리즈로 출력하여 브라우저에서 더 정확한 텍스트 표시를 제공하지만 텍스트 중심 페이지의 경우 훨씬 더 큰 출력을 생성합니다.False의 표시 품질은 현재 시스템에 참조된 글꼴의 존재에 의존합니다. 글꼴이 없으면 인터넷 브라우저가 일부 기본값으로 대체되어 불쾌한 외관을 유발합니다. SVG의 텍스트를 구문 분석하려면False를 선택하세요. (v1.17.5의 새로운 기능)
- 반환:
이미지를 포함하는 UTF-8 인코딩 문자열. SVG는 XML 구문을 사용하므로 텍스트 파일로 저장할 수 있으며, 표준 확장자는
.svg입니다.참고
PDF의 경우 메서드를 사용하기 전에 페이지의 CropBox를 수정하여 “전체 페이지 이미지만” 제한을 우회할 수 있습니다.
- get_pixmap(*, matrix=pymupdf.Identity, dpi=None, colorspace=pymupdf.csRGB, clip=None, alpha=False, annots=True)¶
페이지에서 픽스맵을 생성합니다. 이것은 아마도 Pixmap 을 생성하는 가장 자주 사용되는 메서드입니다.
모든 매개변수는 키워드 전용 입니다.
- 매개변수:
matrix (matrix_like) – 기본값은 Identity 입니다.
dpi (int) – x 및 y 방향의 원하는 해상도.
None이 아니면"matrix"매개변수가 무시됩니다. (v1.19.2의 새로운 기능)colorspace (str or Colorspace (색 공간)) – 원하는 색 공간, “GRAY”, “RGB” 또는 “CMYK” 중 하나(대소문자 구분 안 함). 또는 Colorspace (색 공간) 를 지정하세요. 즉, 미리 정의된 것 중 하나:
csGRAY,csRGB또는csCMYK.clip (irect_like) – 이 영역과 페이지 사각형의 교집합으로 렌더링을 제한합니다.
alpha (bool) –
알파 채널을 추가할지 여부. 투명도가 실제로 필요하지 않으면 항상 기본값
False를 수락하세요. 이것은 많은 메모리(RGB의 경우 25% … 그리고 픽스맵은 일반적으로 큽니다 !)와 처리 시간을 절약합니다. 또한 이미지가 렌더링되는 방식의 중요한 차이점 을 참고하세요:True로 픽스맵의 샘플 영역은 0x00 으로 미리 지워집니다. 이것은 페이지가 비어 있는 곳에 투명한 영역을 만듭니다.False로 픽스맵의 샘플은 0xff 로 미리 지워집니다. 이것은 페이지에 표시할 것이 없을 때 흰색 을 만듭니다.Show/hide history
- v1.14.17에서 변경됨
기본 알파 값은 이제
False입니다.alpha=True 로 생성됨
alpha=False 로 생성됨
annots (bool) – (버전 1.16.0의 새로운 기능) 주석도 렌더링할지 아니면 억제할지 여부. 주석에 대한 픽스맵을 별도로 생성할 수 있습니다.
- 반환 형식:
- 반환:
페이지의 픽스맵. 생성된 이미지를 세밀하게 제어하려면 가장 중요한 매개변수는 matrix 입니다. 예를 들어 Matrix(xzoom, yzoom) 를 사용하여 이미지 해상도를 높이거나 낮출 수 있습니다. zoom > 1이면 더 높은 해상도를 얻습니다: zoom=2는 해당 방향의 픽셀 수를 두 배로 하여 2배 큰 이미지를 생성합니다. 음수가 아닌 값은 각각 수평 또는 수직으로 뒤집습니다. 마찬가지로 행렬을 사용하여 회전하거나 기울일 수 있으며, 예를 들어 행렬 곱셈을 통해 효과를 결합할 수 있습니다. 자세한 내용은 Matrix 섹션을 참조하세요.
참고
alpha=True이면 픽스맵은 “premultiplied” 픽셀을 가집니다. 배경에 대한 자세한 내용은 예를 들어 여기 에서 “Premultiplied alpha”를 찾아보세요.이 메서드는 모든 페이지 회전을 존중하며
clip과Page.cropbox의 교집합을 초과하지 않습니다. 페이지의 mediabox가 필요한 경우(그리고 이것이 다른 사각형인 경우) 다음과 같은 스니펫을 사용하여 이를 달성할 수 있습니다:In [1]: import pymupdf In [2]: doc=pymupdf.open("demo1.pdf") In [3]: page=doc[0] In [4]: rotation = page.rotation In [5]: cropbox = page.cropbox In [6]: page.set_cropbox(page.mediabox) In [7]: page.set_rotation(0) In [8]: pix = page.get_pixmap() In [9]: page.set_cropbox(cropbox) In [10]: if rotation != 0: ...: page.set_rotation(rotation) ...: In [11]:
Show/hide history
v1.19.2에서 변경됨: dpi 매개변수 지원 추가.
- annot_names()¶
PDF 전용: 주석, 위젯 및 링크의 이름 목록을 반환합니다. 기술적으로 이것들은 페이지의 /Annots 배열에서 찾은 모든 PDF 객체의 /NM 값입니다.
- 반환 형식:
list
Show/hide history
v1.16.10의 새로운 기능
- annot_xrefs()¶
PDF 전용: 주석, 위젯 및 링크의
xref번호 목록을 반환합니다 – 기술적으로 페이지의 /Annots 배열에서 찾은 모든 항목입니다.- 반환 형식:
list
- 반환:
항목 (xref, type) 의 목록으로, type은 주석 타입입니다. 타입을 사용하여 링크, 필드 및 주석을 구분하세요. 주석 유형 참조.
Show/hide history
v1.17.1의 새로운 기능
- load_annot(ident)¶
PDF 전용: ident 로 식별된 주석을 반환합니다. 이것은 고유 이름(PDF
/NM키) 또는xref일 수 있습니다.- 매개변수:
ident (str,int) – 주석 이름 또는 xref.
- 반환 형식:
- 반환:
주석 또는
None.
참고
Page.annot_names(),Page.annot_xrefs()메서드는 각각 이름 또는 xref 목록을 제공하며, 여기서 항목을 선택하여 이 메서드를 통해 로드할 수 있습니다.Show/hide history
v1.17.1의 새로운 기능
- load_widget(xref)¶
PDF 전용:
xref로 식별된 필드를 반환합니다.- 매개변수:
xref (int) – 필드의 xref.
- 반환 형식:
- 반환:
필드 또는
None.
참고
이것은 유사한 메서드
Page.load_annot()와 유사합니다 – 여기서는 xref만 식별자로 지원된다는 점을 제외하고.Show/hide history
v1.19.6의 새로운 기능
- load_links()¶
페이지의 첫 번째 링크를 반환합니다. 속성
first_link의 동의어입니다.- 반환 형식:
- 반환:
페이지의 첫 번째 링크(또는
None).
- set_rotation(rotate)¶
PDF 전용: 페이지의 회전을 설정합니다.
- 매개변수:
rotate (int) – 필요한 회전을 도 단위로 지정하는 정수. 90의 정수 배수여야 합니다. 값은 0, 90, 180, 270 중 하나로 변환됩니다.
- recolor(components=1)¶
PDF 전용: 페이지의 모든 객체의 색 공간 컴포넌트를 변경합니다.
- 매개변수:
components (int) – 원하는 색상 컴포넌트 수. 1, 3 또는 4 중 하나여야 하며, 각각 색 공간 DeviceGray, DeviceRGB 또는 DeviceCMYK를 생성합니다. 이 메서드는 텍스트, 이미지 및 벡터 그래픽에 영향을 줍니다. 예를 들어, 기본값 1을 사용하면 페이지가 그레이스케일로 변환됩니다. 페이지가 이미 그레이스케일인 경우 이 메서드는
components값과 관계없이 눈에 보이는 변경을 일으키지 않습니다.
이러한 변경 사항은 영구적 이며 되돌릴 수 없습니다.
- clip_to_rect(rect)¶
PDF 전용: 주어진 사각형 외부의 페이지 콘텐츠를 영구적으로 제거합니다. 이것은
Page.set_cropbox()와 유사하지만, 페이지의 사각형은 변경되지 않고 사각형 외부의 콘텐츠만 제거됩니다.- 매개변수:
rect (rect_like) – 클리핑할 사각형. 유한해야 하며 페이지와의 교집합이 비어 있지 않아야 합니다.
이 메서드는 텍스트에 가장 잘 작동합니다: 사각형과 교집합이 없는 페이지의 모든 텍스트가 제거됩니다(단일 문자로 결정). 벡터 그래픽의 경우 이 메서드는 사각형과 교집합이 없는 모든 경로를 제거합니다. 이미지의 경우 이 메서드는 사각형과 교집합이 없는 모든 이미지를 제거합니다. 사각형과 교집합이 있는 벡터 및 이미지는 전체가 유지됩니다.
이 메서드는 사각형 외부를 덮는 네 개의 교정이 적용된 것과 거의 동일한 효과를 가집니다.
v1.26.4의 새로운 기능.
- remove_rotation()¶
PDF 전용: 외관과 페이지 콘텐츠를 유지하면서 페이지 회전을 0으로 설정합니다.
- 반환:
이 변경을 달성하는 데 사용된 역행렬. 페이지가 회전되지 않은 경우(회전 0), Identity 가 반환됩니다. 이 메서드는 페이지에 있는 모든 주석, 링크 및 위젯의 사각형을 자동으로 다시 계산합니다.
이 메서드는 예를 들어
Page.show_pdf_page()와 함께 사용할 때 유용할 수 있습니다.
- show_pdf_page(rect, docsrc, pno=0, keep_proportion=True, overlay=True, oc=0, rotate=0, clip=None)¶
PDF 전용: 다른 PDF의 페이지를 표시합니다. 이것은
Page.insert_image()와 유사하지만 소스 페이지는 자체의 복사본처럼 나타나며 래스터화되지 않습니다. 이것은 다목적 메서드입니다. 예를 들어, 다음에 사용할 수 있습니다:기존 PDF 파일의 “n-up” 버전 생성, 여러 입력 페이지를 하나의 출력 페이지 로 결합(예제 combine.py 참조),
“포스터화된” PDF 파일 생성, 즉 모든 입력 페이지가 여러 부분으로 분할되어 각각 별도의 출력 페이지를 생성(예제 posterize.py 참조),
include PDF-based vector images like company logos, watermarks, etc., see svg.py, which puts an SVG-based logo on each page.
- 매개변수:
rect (rect_like) – 현재 페이지에 이미지를 배치할 위치. 유한해야 하며 페이지와의 교집합이 비어 있지 않아야 합니다.
docsrc (Document) – 페이지를 포함하는 소스 PDF 문서. 다른 문서 객체여야 하지만 동일한 파일일 수 있습니다.
pno (int) – 표시할 페이지 번호(0 기반,
-∞ < pno < docsrc.page_count).keep_proportion (bool) – 너비-높이 비율을 유지할지 여부(기본값). false이면 회전 값과 관계없이 4개의 모서리가 모두 대상 사각형의 경계에 배치됩니다. 일반적으로 이것은 왜곡되고/또는 비사각형 이미지를 제공합니다.
overlay (bool) – 이미지를 전경(기본값) 또는 배경에 배치합니다.
oc (int) – (
xref) 이OCG/OCMD에 따라 가시성을 설정합니다(대상 PDF에 정의되어 있어야 함) [9]. (v1.18.3의 새로운 기능)rotate (float) – 소스 사각형을 특정 각도로 회전하여 표시합니다. 모든 각도가 지원됩니다(v1.14.11에서 변경됨). (v1.14.10의 새로운 기능)
clip (rect_like) – 소스 페이지의 어느 부분을 표시할지 선택합니다. 기본값은 전체 페이지이며, 그렇지 않으면 유한해야 하며 소스 페이지와의 교집합이 비어 있지 않아야 합니다.
참고
Document.insert_pdf()메서드와 달리 이 메서드는 주석, 위젯 또는 링크를 복사하지 않으므로 이러한 객체는 대상에 포함되지 않습니다 [6]. 하지만 모든 기타 리소스(텍스트, 이미지, 글꼴 등) 는 현재 PDF로 가져옵니다. 따라서 clip 으로 지정된 보이는 영역에 포함되지 않더라도 텍스트 추출 및get_fonts()및get_images()목록에 나타납니다.예제: 동일한 소스 페이지를 90도 및 -90도로 회전하여 표시:
>>> doc = pymupdf.open() # new empty PDF >>> page=doc.new_page() # new page in A4 format >>> >>> # upper half page >>> r1 = pymupdf.Rect(0, 0, page.rect.width, page.rect.height/2) >>> >>> # lower half page >>> r2 = r1 + (0, page.rect.height/2, 0, page.rect.height/2) >>> >>> src = pymupdf.open("PyMuPDF.pdf") # show page 0 of this >>> >>> page.show_pdf_page(r1, src, 0, rotate=90) >>> page.show_pdf_page(r2, src, 0, rotate=-90) >>> doc.save("show.pdf")
Show/hide history
v1.14.11에서 변경됨: 매개변수 reuse_xref 가 더 이상 사용되지 않습니다. 소스 사각형을 대상 사각형의 중앙에 배치합니다. 이제 모든 회전 각도가 지원됩니다.
v1.18.3에서 변경됨: 새로운 매개변수
oc.
- search_for(needle, *, clip=None, quads=False, flags=TEXT_DEHYPHENATE | TEXT_PRESERVE_WHITESPACE | TEXT_PRESERVE_LIGATURES | TEXT_MEDIABOX_CLIP, textpage=None)¶
페이지에서 needle 을 검색합니다.
TextPage.search()의 래퍼입니다.- 매개변수:
needle (str) – 검색할 텍스트. 공백을 포함할 수 있습니다. 대소문자는 무시되지만 ASCII 문자에만 작동합니다: 예를 들어, “COMPÉTENCES” 는 needle이 “compétences” 인 경우 찾을 수 없습니다 – 하지만 “compÉtences” 는 찾을 수 있습니다. 독일어 움라우트 등도 마찬가지입니다.
clip (rect_like) – 이 영역 내에서만 검색합니다. (v1.18.2의 새로운 기능)
flags (int) – 기본 TextPage 에 의해 추출된 데이터를 제어합니다. 기본적으로 합자와 공백이 유지되며 하이픈 연결 [8] 이 감지됩니다.
textpage – 이전에 생성된 TextPage 를 사용합니다. 이것은 실행 시간을 크게 줄입니다. 지정하면 ‘flags’ 및 ‘clip’ 인수는 무시됩니다. 생략하면 임시 textpage가 생성됩니다. (v1.19.0의 새로운 기능)
- 반환 형식:
list
- 반환:
Rect 또는 Quad 객체의 목록으로, 각각은 – 일반적으로! – needle 의 한 발생을 둘러쌉니다. 하지만: needle 의 일부가 여러 줄에 나타나면 각 부분에 대해 별도의 항목이 생성됩니다. 따라서
needle = "search string"인 경우 두 개의 사각형이 생성될 수 있습니다.Show/hide history
v1.18.2의 변경 사항:
목록 길이에 더 이상 제한이 없습니다(
hit_max매개변수 제거).단어가 줄바꿈에서 하이픈으로 연결 되어 있어도 여전히 찾을 수 있습니다. 예를 들어, needle “method” 는 줄바꿈에서 “meth-od” 로 하이픈 연결되어 있어도 찾을 수 있으며, 두 개의 사각형이 반환됩니다: 하나는 “meth” (하이픈 없이)를 둘러싸고 다른 하나는 “od” 를 둘러쌉니다.
참고
이 메서드는 다중 줄 텍스트 마커 주석을 지원합니다: 반환된 전체 목록을 주석을 생성하기 위한 단일 매개변수로 사용할 수 있습니다.
조심
까다로운 측면이 있습니다: 검색 로직은 needle 의 연속된 여러 발생 을 하나로 간주합니다: needle 이 “abc” 이고 페이지에 “abc” 와 “abcabc” 가 포함된 경우, 두 개의 사각형만 반환됩니다. 하나는 “abc” 에 대한 것이고 두 번째는 “abcabc” 에 대한 것입니다.
Page.get_textbox()를 사용하여 각 사각형이 실제로 어떤 텍스트를 둘러싸고 있는지 확인할 수 있습니다.
참고
반복적으로 요청된 기능은
"needle"문자열을 지정할 때 정규 표현식 을 지원하는 것입니다: 이것을 수행할 방법이 없습니다. 그런 방향이 필요하다면, 먼저 원하는 형식으로 텍스트를 추출한 다음 일부 정규식 패턴과 일치시켜 결과를 하위 선택하세요. 단어를 일치시키는 예제는 다음과 같습니다:>>> pattern = re.compile(r"...") # the regex pattern >>> words = page.get_text("words") # extract words on page >>> matches = [w for w in words if pattern.search(w[4])]
matches목록에는 주어진 패턴과 일치하는 단어가 포함됩니다. 같은 방식으로page.get_text("dict")의 출력에서span["text"]를 선택할 수 있습니다.Show/hide history
v1.18.2에서 변경됨:
clip매개변수 추가.hit_max매개변수 제거. 기본값 “dehyphenate” 추가.v1.19.0에서 변경됨: TextPage 매개변수 추가.
- set_mediabox(r)¶
PDF 전용: 페이지 객체 정의에서
mediabox를 설정하여 물리적 페이지 크기를 변경합니다.- 매개변수:
r (rect-like) – 새로운
mediabox값.
참고
이 메서드는 일관성 없는 상황을 방지하기 위해 페이지의 다른 (선택적) 사각형(
cropbox, ArtBox, TrimBox 및 Bleedbox)도 제거합니다. 이것은 그것들이 기본값을 가정하도록 합니다.조심
비어 있지 않은 페이지의 경우 이것은 원하지 않는 효과를 가질 수 있습니다. 모든 콘텐츠의 위치가 이 값에 의존하므로 위치가 변경되거나 사라질 수 있기 때문입니다.
Show/hide history
v1.16.13의 새로운 기능
v1.19.4에서 변경됨: 모든 다른 사각형 정의 제거.
- set_cropbox(r)¶
PDF 전용: 페이지의 보이는 부분을 변경합니다.
- 매개변수:
r (rect_like) – 페이지의 새로운 보이는 영역. 이것은 회전되지 않은 좌표 로 지정되어야 하며, 비어 있지 않고 무한하지 않으며
Page.mediabox에 완전히 포함되어야 합니다.
실행 후 (페이지가 회전되지 않은 경우),
Page.rect는 이 사각형과 같지만 필요하면 왼쪽 상단 위치 (0, 0)로 이동합니다. 예제 세션:>>> page = doc.new_page() >>> page.rect pymupdf.Rect(0.0, 0.0, 595.0, 842.0) >>> >>> page.cropbox # cropbox and mediabox still equal pymupdf.Rect(0.0, 0.0, 595.0, 842.0) >>> >>> # now set cropbox to a part of the page >>> page.set_cropbox(pymupdf.Rect(100, 100, 400, 400)) >>> # this will also change the "rect" property: >>> page.rect pymupdf.Rect(0.0, 0.0, 300.0, 300.0) >>> >>> # but mediabox remains unaffected >>> page.mediabox pymupdf.Rect(0.0, 0.0, 595.0, 842.0) >>> >>> # revert CropBox change >>> # either set it to MediaBox >>> page.set_cropbox(page.mediabox) >>> # or 'refresh' MediaBox: will remove all other rectangles >>> page.set_mediabox(page.mediabox)
- set_artbox(r)¶
- set_bleedbox(r)¶
- set_trimbox(r)¶
PDF 전용: 페이지 객체에서 해당 사각형을 설정합니다. 이러한 객체의 의미는 Adobe PDF 참조, 77페이지를 참조하세요. 매개변수와 제한 사항은
Page.set_cropbox()와 동일합니다.Show/hide history
v1.19.4의 새로운 기능
- rotation¶
페이지의 회전을 도 단위로 포함합니다(비-PDF 타입의 경우 항상 0). 이것은 PDF 파일의 값 복사본입니다. PDF 문서에 따르면:
“표시되거나 인쇄될 때 페이지가 시계 방향으로 회전해야 하는 도 수. 값은 90의 배수여야 합니다. 기본값: 0.”
PyMuPDF에서는 이 속성이 항상 0, 90, 180 또는 270 중 하나가 되도록 합니다.
- Type:
int
- cropbox¶
PDF의 경우 페이지의
/CropBox. 항상 회전되지 않은 페이지 사각형이 반환됩니다. 비-PDF의 경우 이것은 항상 페이지 사각형과 같습니다.참고
PDF에서
/MediaBox,/CropBox및 페이지 사각형 간의 관계는 때때로 혼란스러울 수 있으므로MediaBox에 대한 용어집을 참조하세요.- Type:
- artbox¶
- bleedbox¶
- trimbox¶
페이지의
/ArtBox,/BleedBox,/TrimBox각각. 제공되지 않은 경우Page.cropbox로 기본값이 설정됩니다.- Type:
- mediabox_size¶
PDF의 경우 페이지의
Page.mediabox의 너비와 높이를 포함하고, 그렇지 않으면Page.rect의 오른쪽 하단 좌표를 포함합니다.- Type:
- mediabox¶
PDF의 경우 페이지의
mediabox, 그렇지 않으면Page.rect.- Type:
참고
대부분의 PDF 문서와 모든 다른 문서 타입 의 경우
page.rect == page.cropbox == page.mediabox가 참입니다. 하지만 일부 PDF의 경우 보이는 페이지는mediabox의 진부분집합입니다. 또한 페이지가 회전된 경우Page.rect는Page.cropbox와 같지 않을 수 있습니다. 이러한 경우 위의 속성은 페이지 요소를 올바르게 찾는 데 도움이 됩니다.
- transformation_matrix¶
이 행렬은 좌표를 PDF 공간에서 MuPDF 공간으로 변환합니다. 예를 들어, PDF에서
/Rect [x0 y0 x1 y1]의 쌍 (x0, y0)은 사각형의 왼쪽 하단 점을 지정합니다 – MuPDF 시스템과 대조적으로, 여기서 (x0, y0)는 왼쪽 상단을 지정합니다. PDF 좌표에 이 행렬을 곱하면 (Py-) MuPDF 사각형 버전을 제공합니다. 명백히, 역행렬은 다시 PDF 사각형을 생성합니다.- Type:
- rotation_matrix¶
- derotation_matrix¶
이 행렬은 회전된 PDF 페이지를 처리하는 데 사용할 수 있습니다. PDF 페이지에 무언가를 추가/삽입할 때 회전되지 않은 페이지의 좌표가 항상 사용됩니다. 이 행렬은 두 상태 간의 변환을 돕습니다. 예: 페이지가 90도 회전된 경우 – A4 페이지의 왼쪽 상단 Point(0, 0)의 좌표는 무엇일까요?
>>> page.set_rotation(90) # rotate an ISO A4 page >>> page.rect Rect(0.0, 0.0, 842.0, 595.0) >>> p = pymupdf.Point(0, 0) # where did top-left point land? >>> p * page.rotation_matrix Point(842.0, 0.0) >>>
- Type:
- first_annot¶
페이지의 첫 번째 Annot (주석) 를 포함합니다(또는
None).- Type:
- first_widget¶
페이지의 첫 번째 Widget (위젯) 를 포함합니다(또는
None).- Type:
- number¶
페이지 번호.
- Type:
int
- rect¶
Contains the rectangle of the page. Same as result of
Page.bound().- Type:
get_links() 엔트리 설명¶
Page.get_links() 리스트의 각 엔트리는 다음 키를 가진 딕셔너리입니다:
kind: (필수) 링크 종류를 나타내는 정수. 이것은 LINK_NONE, LINK_GOTO, LINK_GOTOR, LINK_LAUNCH 또는 LINK_URI 중 하나입니다. 이러한 이름의 값과 의미는 링크 대상 종류 를 참조하세요.
from: (필수) 페이지의 보이는 표현에서 “핫 스팟” 위치를 설명하는 Rect (일반적으로 커서가 손 이미지로 변경되는 위치).
page: 대상 페이지를 나타내는 0 기반 정수. LINK_GOTO 및 LINK_GOTOR 에 필요하며, 그렇지 않으면 무시됩니다.
to: 제공된 페이지의 대상 위치를 지정하는 pymupdf.Point (기본값은 pymupdf.Point(0, 0)) 또는 기호(간접) 이름. 간접 이름이 지정되면 page = -1 이 필요하며 이 이름이 작동하려면 PDF에 정의되어 있어야 합니다. LINK_GOTO 및 LINK_GOTOR 에 필요하며, 그렇지 않으면 무시됩니다.
file: 대상 파일을 지정하는 문자열. LINK_GOTOR 및 LINK_LAUNCH 에 필요하며, 그렇지 않으면 무시됩니다.
uri: 대상 인터넷 리소스를 지정하는 문자열. LINK_URI 에 필요하며, 그렇지 않으면 무시됩니다. URL의 하위 타입을 분류하는 명확한 하위 문자열로 이 문자열을 시작해야 합니다. 예:
"http://","https://","file://","ftp://","mailto:"등. 그렇지 않으면 브라우저가 텍스트를 해석하려고 시도하고 의도한 URL 타입에 대해 원하지 않거나 예상치 못한 결론에 도달할 수 있습니다.xref: 링크 객체의 PDFxref를 지정하는 정수. 이 항목을 어떤 방식으로도 변경하지 마세요. 링크 삭제 및 업데이트에 필요하며, 그렇지 않으면 무시됩니다. 비PDF 문서의 경우 이 항목은 -1 을 포함합니다. MuPDF에서 지원하지 않는 링크가 하나라도 있으면 get_links() 리스트의 모든 엔트리에 대해 -1 입니다 - 링크 지원에 대한 참고사항 를 참조하세요.
링크 지원에 대한 참고사항¶
MuPDF의 링크 지원이 v1.10a 에서 변경되었습니다. 이러한 변경 사항은 링크 타입 LINK_GOTO 및 LINK_GOTOR 에 영향을 줍니다.
읽기 (get_links() 메서드 및 first_link 속성 체인과 관련)¶
MuPDF가 다른 파일에 대한 링크를 감지하면 LINK_GOTOR 또는 LINK_LAUNCH 링크 종류를 제공합니다. LINK_GOTOR 의 경우 대상 세부 정보는 페이지 번호(최종적으로 위치 정보 포함) 또는 간접 대상으로 제공될 수 있습니다.
간접 대상이 제공되면 이것은 page = -1 로 표시되며, link.dest.dest 에 이 이름이 포함됩니다. get_links() 리스트의 딕셔너리는 이 정보를 to 값으로 포함합니다.
내부 링크는 항상 LINK_GOTO 종류입니다. 내부 링크가 간접 대상을 지정하면 항상 해결 되며 결과적인 직접 대상이 반환됩니다. 이름은 내부 링크에 대해 절대 반환되지 않으며, 정의되지 않은 대상은 링크가 무시되도록 합니다.
작성¶
PyMuPDF 는 적절한 PDF 객체 소스 를 구성하고 작성하여 링크를 작성(업데이트, 삽입)합니다. 이것은 LINK_GOTOR 및 LINK_GOTO 링크 종류에 대해 간접 대상을 지정할 수 있게 합니다(PDF 1.2 이전 파일 형식은 지원되지 않습니다).
경고
LINK_GOTO 간접 대상이 정의되지 않은 이름을 지정하면 이 링크는 나중에 MuPDF / PyMuPDF 로 찾거나 다시 읽을 수 없습니다. 그러나 다른 리더는 감지 하지만 오류로 표시합니다.
간접 LINK_GOTOR 대상은 일반적으로 유효성을 확인할 수 없으므로 항상 수락됩니다.
예제: 동일한 문서의 다른 페이지를 가리키는 링크를 삽입하는 방법
링크가 배치될 현재 페이지의 사각형을 결정합니다. 이것은 이미지 또는 일부 텍스트의 bbox일 수 있습니다.
대상 페이지 번호(“pno”, 0 기반)와 링크가 향해야 할 그 위의 Point 를 결정합니다.
딕셔너리
d = {"kind": pymupdf.LINK_GOTO, "page": pno, "from": bbox, "to": point}를 생성합니다.page.insert_link(d)를 실행합니다.
Document 및 Page 의 동종 메서드¶
이것은 Document 및 Page 수준의 동종 메서드 개요입니다.
문서 수준 |
페이지 수준 |
|---|---|
참고
대부분의 문서 메서드(왼쪽 열)는 편의를 위해 존재하며, Document[pno].<page method> 의 래퍼일 뿐입니다. 따라서 각 실행마다 페이지를 로드하고 버립니다.
그러나 처음 두 메서드는 다르게 작동합니다. 페이지의 객체 정의 문장만 필요하며 - 페이지 자체는 로드되지 않습니다. 따라서 예를 들어 Page.get_fonts() 는 반대 방향의 래퍼이며 다음과 같이 정의됩니다: page.get_fonts == page.parent.get_page_fonts(page.number).
Document 동등 메서드를 호출할 때 페이지 번호가 매개변수로 전달됩니다, 예:
Document.get_page_images(pno) 또는 Document.get_page_text(pno)
팁
페이지 번호 매개변수 pno 는 0 기반 정수 -∞ < pno < page_count 입니다.
