Xml

  • v1.21.0 에서 새로 추가됨

이것은 HTML 또는 XML 노드를 나타냅니다. Story 객체의 DOM(Document Object Model) 콘텐츠에 액세스하기 위한 헬퍼 클래스입니다.

Xml 객체를 직접 생성할 필요는 없습니다: Story 를 생성한 후 단순히 Story.body (Xml 노드)를 가져와 스토리의 DOM을 탐색하는 데 사용하세요.

메서드 / 속성

설명

add_bullet_list()

ul 태그 추가 - 불릿 목록, 컨텍스트 매니저.

add_codeblock()

pre 태그 추가, 컨텍스트 매니저.

add_description_list()

dl 태그 추가, 컨텍스트 매니저.

add_division()

div 태그 추가(“section”에서 이름 변경), 컨텍스트 매니저.

add_header()

헤더 태그 추가(h1 ~ h6 중 하나), 컨텍스트 매니저.

add_horizontal_line()

hr 태그 추가.

add_image()

img 태그 추가.

add_link()

a 태그 추가.

add_number_list()

ol 태그 추가, 컨텍스트 매니저.

add_paragraph()

p 태그 추가.

add_span()

span 태그 추가, 컨텍스트 매니저.

add_subscript()

아래첨자 텍스트 추가(sub 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_superscript()

위첨자 텍스트 추가(sup 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_code()

코드 텍스트 추가(code 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_var()

코드 텍스트 추가(code 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_samp()

코드 텍스트 추가(code 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_kbd()

코드 텍스트 추가(code 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_text()

텍스트 문자열 추가. 줄바꿈 \nbr 태그로 처리됩니다.

append_child()

자식 노드를 추가합니다.

clone()

이 노드의 복사본을 만듭니다.

create_element()

주어진 태그 이름으로 새 노드를 만듭니다.

create_text_node()

현재 노드에 대한 직접 텍스트를 생성합니다.

find()

주어진 속성을 가진 하위 노드를 찾습니다.

find_next()

동일한 기준으로 이전 “find” 를 반복합니다.

insert_after()

현재 노드 뒤에 요소를 삽입합니다.

insert_before()

현재 노드 앞에 요소를 삽입합니다.

remove()

이 노드를 제거합니다.

set_align()

CSS 스타일 사양을 사용하여 정렬을 설정합니다. 블록 레벨 태그에만 작동합니다.

set_attribute()

임의의 키를 일부 값(비어 있을 수 있음)으로 설정합니다.

set_bgcolor()

배경색을 설정합니다. 블록 레벨 태그에만 작동합니다.

set_bold()

굵게를 켜거나 끄거나 일부 문자열 값으로 설정합니다.

set_color()

텍스트 색상을 설정합니다.

set_columns()

열 수를 설정합니다. 인수는 유효한 숫자 또는 문자열일 수 있습니다.

set_font()

글꼴 패밀리를 설정합니다. 예: “sans-serif”.

set_fontsize()

글꼴 크기를 설정합니다. float 또는 유효한 HTML/CSS 문자열입니다.

set_id()

id 를 설정합니다. 고유성 검사가 수행됩니다.

set_italic()

기울임꼴을 켜거나 끄거나 일부 문자열 값으로 설정합니다.

set_leading()

블록 간 텍스트 거리(-mupdf-leading)를 설정합니다. 블록 레벨 노드에만 작동합니다.

set_lineheight()

줄 높이를 설정합니다. 1.5와 같은 float는 1.5 * fontsize 로 설정됩니다.

set_margins()

여백을 설정합니다. 최대 4개의 값을 가진 float 또는 문자열입니다.

set_pagebreak_after()

이 노드 뒤에 페이지 나누기를 삽입합니다.

set_pagebreak_before()

이 노드 앞에 페이지 나누기를 삽입합니다.

set_properties()

한 번의 호출로 원하는 모든 속성을 설정합니다.

add_style()

자체 set_ 메서드로 지원되지 않는 “style” 을 설정(추가)합니다.

add_class()

“class” 속성을 설정(추가)합니다.

set_text_indent()

첫 번째 텍스트 블록 줄의 들여쓰기를 설정합니다. 블록 레벨 노드에만 작동합니다.

tagname

p 와 같은 HTML 태그 이름이거나 텍스트 노드인 경우 None 입니다.

text

노드의 텍스트이거나 태그 노드인 경우 None 입니다.

is_text

노드가 텍스트인지 확인합니다.

first_child

이 노드보다 한 단계 아래의 첫 번째 노드를 포함합니다(또는 None).

last_child

이 노드보다 한 단계 아래의 마지막 노드를 포함합니다(또는 None).

next

같은 레벨의 다음 노드(또는 None).

previous

같은 레벨의 이전 노드.

root

DOM의 최상위 노드로, 따라서 태그 이름이 html 입니다.

클래스 API

class Xml
add_bullet_list()

ul 태그 추가 - 불릿 목록, 컨텍스트 매니저. ul 를 참조하세요.

add_codeblock()

pre 태그 추가, 컨텍스트 매니저. pre 를 참조하세요.

add_description_list()

dl 태그 추가, 컨텍스트 매니저. dl 를 참조하세요.

add_division()

div 태그 추가, 컨텍스트 매니저. div 를 참조하세요.

add_header(value)

헤더 태그 추가(h1 ~ h6 중 하나), 컨텍스트 매니저. headings 를 참조하세요.

매개변수:

value (int) – 1 - 6 사이의 값.

add_horizontal_line()

hr 태그 추가. hr 를 참조하세요.

add_image(name, width=None, height=None)

img 태그 추가. 이것은 DOM에 명명된 이미지를 포함시킵니다.

매개변수:
  • name (str) – 이미지의 파일명. 이것은 Story 생성자의 Archive (아카이브) 매개변수 항목의 멤버 이름 이어야 합니다.

  • width – 제공된 경우 절대(int) 값 또는 “30%” 와 같은 백분율 문자열입니다. 백분율 값은 Story.place() 의 지정된 where 사각형의 너비를 나타냅니다. 이 값이 제공되고 height 가 생략되면 이미지는 종횡비를 유지하면서 포함됩니다.

  • height – 제공된 경우 절대(int) 값 또는 “30%” 와 같은 백분율 문자열입니다. 백분율 값은 Story.place() 의 지정된 where 사각형의 높이를 나타냅니다. 이 값이 제공되고 width 가 생략되면 이미지의 종횡비가 유지됩니다.

a 태그 추가 - 인라인 요소, 텍스트처럼 처리됩니다.

매개변수:
  • href (str) – URL 대상.

  • text (str) – 표시할 텍스트. 생략하면 href 텍스트가 대신 표시됩니다.

add_number_list()

ol 태그 추가, 컨텍스트 매니저.

add_paragraph()

p 태그 추가, 컨텍스트 매니저.

add_span()

span 태그 추가, 컨텍스트 매니저. span 를 참조하세요

add_subscript(text)

“아래첨자” 텍스트 추가(sub 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_superscript(text)

“위첨자” 텍스트 추가(sup 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_code(text)

“코드” 텍스트 추가(code 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_var(text)

“변수” 텍스트 추가(var 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_samp(text)

“샘플 출력” 텍스트 추가(samp 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_kbd(text)

“키보드 입력” 텍스트 추가(kbd 태그) - 인라인 요소, 텍스트처럼 처리됩니다.

add_text(text)

텍스트 문자열 추가. 줄바꿈 \nbr 태그로 처리됩니다.

set_align(value)

텍스트 정렬을 설정합니다. 블록 레벨 태그에만 작동합니다.

매개변수:

value텍스트 정렬 중 하나 또는 text-align 값.

set_attribute(key, value=None)

임의의 키를 일부 값(비어 있을 수 있음)으로 설정합니다.

매개변수:
  • key (str) – 속성의 이름.

  • value (str) – 속성의 (선택적) 값.

get_attributes()

현재 노드의 모든 속성을 딕셔너리로 검색합니다.

반환:

노드의 속성과 값이 있는 딕셔너리.

get_attribute_value(key)

key 의 속성 값을 가져옵니다.

매개변수:

key (str) – 속성의 이름.

반환:

key 의 값을 가진 문자열.

remove_attribute(key)

노드에서 속성 key 를 제거합니다.

매개변수:

key (str) – 속성의 이름.

set_bgcolor(value)

배경색을 설정합니다. 블록 레벨 태그에만 작동합니다.

매개변수:

value – (255, 0, 0)(“red”의 경우)와 같은 RGB 값 또는 유효한 background-color 값.

set_bold(value)

굵게를 켜거나 끄거나 일부 문자열 값으로 설정합니다.

매개변수:

valueTrue, False 또는 유효한 font-weight 값.

set_color(value)

다음 텍스트의 색상을 설정합니다.

매개변수:

value – (255, 0, 0)(“red”의 경우)와 같은 RGB 값 또는 유효한 color 값.

set_columns(value)

열 수를 설정합니다.

매개변수:

value – 유효한 columns 값.

참고

현재 무시됨 - 향후 MuPDF 버전에서 지원됩니다.

set_font(value)

글꼴 패밀리를 설정합니다.

매개변수:

value (str) – 예: “sans-serif”.

set_fontsize(value)

다음 텍스트의 글꼴 크기를 설정합니다.

매개변수:

value – float 또는 유효한 font-size 값.

set_id(unqid)

id 를 설정합니다. 이것은 DOM 내에서 노드의 고유 식별자 역할을 합니다. 노드를 쉽게 찾아 검사하거나 수정하는 데 사용하세요. 고유성 검사가 수행됩니다.

매개변수:

unqid (str) – 노드의 id 문자열.

set_italic(value)

다음 텍스트에 대해 기울임꼴을 켜거나 끄거나 일부 문자열 값으로 설정합니다.

매개변수:

valueTrue, False 또는 유효한 font-style 값.

set_leading(value)

블록 간 텍스트 거리(-mupdf-leading)를 설정합니다. 블록 레벨 노드에만 작동합니다.

매개변수:

value (float) – 이전 블록까지의 거리(포인트 단위).

set_lineheight(value)

줄 높이를 설정합니다.

매개변수:

value – 1.5와 같은 float(1.5 * fontsize 로 설정됨) 또는 유효한 line-height 값.

set_margins(value)

여백을 설정합니다.

매개변수:

value – 최대 4개의 값을 가진 float 또는 문자열. CSS documentation 를 참조하세요.

set_pagebreak_after()

이 노드 뒤에 페이지 나누기를 삽입합니다.

set_pagebreak_before()

이 노드 앞에 페이지 나누기를 삽입합니다.

set_properties(align=None, bgcolor=None, bold=None, color=None, columns=None, font=None, fontsize=None, indent=None, italic=None, leading=None, lineheight=None, margins=None, pagebreak_after=False, pagebreak_before=False, unqid=None, cls=None)

한 번의 호출로 원하는 모든 속성을 설정합니다. 인수 값의 의미는 해당 set_ 메서드의 값과 같습니다.

참고

이 메서드로 설정된 속성은 노드에 직접 연결되지만, 모든 set_ 메서드는 해당 속성을 가진 새 span 을 현재 노드 아래에 생성합니다. 따라서 예를 들어 body 에 대해 일부 속성을 “전역적으로” 설정하려면 이 메서드를 사용해야 합니다.

add_style(value)

자체 set_ 메서드로 지원되지 않는 일부 스타일 속성을 설정(추가)합니다.

매개변수:

value (str) – 유효한 CSS 스타일 값.

add_class(value)

“class” 속성을 설정(추가)합니다.

매개변수:

value (str) – 클래스의 이름. DOM의 HTML 또는 CSS 소스에 정의되어 있어야 합니다.

set_text_indent(value)

첫 번째 텍스트 블록 줄의 들여쓰기를 설정합니다. 블록 레벨 노드에만 작동합니다.

매개변수:

value – 유효한 text-indent 값. 음수 값은 작동하지 않습니다.

append_child(node)

자식 노드를 추가합니다. 이것은 Xml.add_paragraph() 와 같은 다른 메서드에서 사용하는 저수준 메서드입니다.

매개변수:

node – 추가할 Xml 노드.

create_text_node(text)

현재 노드에 대한 직접 텍스트를 생성합니다.

매개변수:

text (str) – 추가할 텍스트.

반환 형식:

Xml

반환:

생성된 요소.

create_element(tag)

주어진 태그로 새 노드를 생성합니다. 이것은 Xml.add_paragraph() 와 같은 다른 메서드에서 사용하는 저수준 메서드입니다.

매개변수:

tag (str) – 요소 태그.

반환 형식:

Xml

반환:

생성된 요소. 실제로 DOM에 바인딩하려면 Xml.append_child() 를 사용하세요.

insert_before(elem)

주어진 요소 elem 을 이 노드 앞에 삽입합니다.

매개변수:

elem – 일부 Xml 요소.

insert_after(elem)

주어진 요소 elem 을 이 노드 뒤에 삽입합니다.

매개변수:

elem – 일부 Xml 요소.

clone()

이 노드의 복사본을 만듭니다. 그런 다음 이 DOM에 추가( Xml.append_child() 사용)하거나 삽입( Xml.insert_before(), Xml.insert_after() 중 하나 사용)할 수 있습니다.

반환:

현재 노드의 복제본(Xml).

remove()

이 노드를 DOM에서 제거합니다.

debug()

디버깅 목적으로 이 노드의 구조를 간소화된 형태로 출력합니다.

find(tag, att, match)

현재 노드 아래에서 주어진 tag, 속성 att 및 값 match 를 가진 첫 번째 노드를 찾습니다.

매개변수:
  • tag (str) – 이 태그로 검색을 제한합니다. 제한 없는 검색의 경우 None 일 수 있습니다.

  • att (str) – 이 속성을 확인합니다. None 일 수 있습니다.

  • match (str) – 일치시킬 원하는 속성 값. None 일 수 있습니다.

반환 형식:

Xml.

반환:

찾은 것이 없으면 None, 그렇지 않으면 첫 번째 일치하는 노드.

find_next(tag, att, match)

동일한 값으로 이전 Xml.find() (또는 find_next()) 를 계속합니다.

반환 형식:

Xml.

반환:

더 이상 찾은 것이 없으면 None, 그렇지 않으면 다음 일치하는 노드.

tagname

p 와 같은 HTML 태그 이름이거나 텍스트 노드인 경우 None 입니다.

text

노드의 텍스트이거나 태그 노드인 경우 None 입니다.

is_text

텍스트 노드인지 확인합니다.

first_child

이 노드보다 한 단계 아래의 첫 번째 노드를 포함합니다(또는 None).

last_child

이 노드보다 한 단계 아래의 마지막 노드를 포함합니다(또는 None).

next

같은 레벨의 다음 노드(또는 None).

previous

같은 레벨의 이전 노드.

root

DOM의 최상위 노드로, 따라서 태그 이름이 html 입니다.

텍스트 속성 설정

HTML에서 태그는 가장 안쪽 텍스트가 부모 태그를 감싸는 태그로부터 속성을 상속 하도록 중첩될 수 있습니다. 예: <p>.

동일한 효과를 얻기 위해 Xml.set_bold()Xml.set_italic() 와 같은 메서드는 각각 현재 노드 아래에 원하는 속성을 가진 임시 span 을 엽니다.

또한 이러한 메서드는 부모 노드를 반환하므로 서로 연결할 수 있습니다.

컨텍스트 매니저 지원

DOM에 노드를 추가하는 표준 방법은 다음과 같습니다:

body = story.body
para = body.add_paragraph()  # add a paragraph
para.set_bold()  # text that follows will be bold
para.add_text("some bold text")
para.set_italic()  # text that follows will additionally be italic
para.add_txt("this is bold and italic")
para.set_italic(False).set_bold(False)  # all following text will be regular
para.add_text("regular text")

“컨텍스트 매니저” 로 표시된 메서드는 다음과 같이 편리하게 사용할 수 있습니다:

body = story.body
with body.add_paragraph() as para:
   para.set_bold().add_text("some bold text")
   para.set_italic().add_text("this is bold and italic")
   para.set_italic(False).set_bold(False).add_text("regular text")
   para.add_text("more regular text")

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.