33class Paragraph :
44 def __init__ (
55 self ,
6- text = None ,
6+ paragraph_text = None ,
77 paragraph_style_name = None ,
8- runs = None ,
9- alignment = None ,
10- left_indent = None ,
11- right_indent = None ,
12- first_line_indent = None ,
13- space_after = None ,
14- space_before = None ,
15- line_spacing = None ,
16- line_spacing_rule = None ,
17- keep_together = None ,
18- keep_with_next = None ,
19- page_break_before = None ,
20- widow_control = None
8+ paragraph_alignment = None ,
9+ paragraph_left_indent = None ,
10+ paragraph_right_indent = None ,
11+ paragraph_first_line_indent = None ,
12+ paragraph_space_after = None ,
13+ paragraph_space_before = None ,
14+ paragraph_line_spacing = None ,
15+ paragraph_line_spacing_rule = None ,
16+ paragraph_keep_together = None ,
17+ paragraph_keep_with_next = None ,
18+ paragraph_page_break_before = None ,
19+ paragraph_widow_control = None
2120 ):
2221 """
2322 Конструктор для создания объекта Paragraph.
2423
2524 Args:
26- text : Текст параграфа (по умолчанию None).
25+ paragraph_text : Текст параграфа (по умолчанию None).
2726 paragraph_style_name: Имя стиля параграфа (по умолчанию None).
28- runs: Список runs с текстом и стилями (по умолчанию None).
29- alignment: Выравнивание параграфа (по умолчанию None).
30- left_indent: Отступ слева в сантиметрах (по умолчанию None).
31- right_indent: Отступ справа в сантиметрах (по умолчанию None).
32- first_line_indent: Отступ первой строки в сантиметрах (по умолчанию None).
33- space_after: Интервал после параграфа в пунктах (по умолчанию None).
34- space_before: Интервал перед параграфом в пунктах (по умолчанию None).
35- line_spacing: Межстрочный интервал (по умолчанию None).
36- line_spacing_rule: Правило межстрочного интервала (по умолчанию None).
37- keep_together: Сохранять строки вместе (по умолчанию None).
38- keep_with_next: Сохранять с следующим параграфом (по умолчанию None).
39- page_break_before: Разрыв страницы перед параграфом (по умолчанию None).
40- widow_control: Контроль висячих строк (по умолчанию None).
27+ paragraph_alignment: Выравнивание параграфа (по умолчанию None).
28+ paragraph_left_indent: Отступ слева (по умолчанию None).
29+ paragraph_right_indent: Отступ справа (по умолчанию None).
30+ paragraph_first_line_indent: Отступ первой строки (по умолчанию None).
31+ paragraph_space_after: Интервал после параграфа (по умолчанию None).
32+ paragraph_space_before: Интервал перед параграфом (по умолчанию None).
33+ paragraph_line_spacing: Межстрочный интервал (по умолчанию None).
34+ paragraph_line_spacing_rule: Правило межстрочного интервала (по умолчанию None).
35+ paragraph_keep_together: Сохранять строки вместе (по умолчанию None).
36+ paragraph_keep_with_next: Сохранять с следующим параграфом (по умолчанию None).
37+ paragraph_page_break_before: Разрыв страницы перед параграфом (по умолчанию None).
38+ paragraph_widow_control: Контроль висячих строк (по умолчанию None).
4139 """
42- self .text = text if text is not None else ""
40+ self .paragraph_text = paragraph_text if paragraph_text is not None else ""
4341 self .paragraph_style_name = paragraph_style_name if paragraph_style_name is not None else "Normal"
44- self .runs = runs if runs is not None else []
45- self .alignment = alignment
46- self .left_indent = left_indent
47- self .right_indent = right_indent
48- self .first_line_indent = first_line_indent
49- self .space_after = space_after
50- self .space_before = space_before
51- self .line_spacing = line_spacing
52- self .line_spacing_rule = line_spacing_rule
53- self .keep_together = keep_together
54- self .keep_with_next = keep_with_next
55- self .page_break_before = page_break_before
56- self .widow_control = widow_control
42+ self .paragraph_alignment = paragraph_alignment
43+ self .paragraph_left_indent = paragraph_left_indent
44+ self .paragraph_right_indent = paragraph_right_indent
45+ self .paragraph_first_line_indent = paragraph_first_line_indent
46+ self .paragraph_space_after = paragraph_space_after
47+ self .paragraph_space_before = paragraph_space_before
48+ self .paragraph_line_spacing = paragraph_line_spacing
49+ self .paragraph_line_spacing_rule = paragraph_line_spacing_rule
50+ self .paragraph_keep_together = paragraph_keep_together
51+ self .paragraph_keep_with_next = paragraph_keep_with_next
52+ self .paragraph_page_break_before = paragraph_page_break_before
53+ self .paragraph_widow_control = paragraph_widow_control
5754 self .modify ()
5855
5956 def modify (self ):
6057 """
6158 Преобразует отступы из пунктов в сантиметры и интервалы в пункты, если они не None.
6259 """
63- if self .left_indent is not None :
64- self .left_indent = self .left_indent / 28.3464566929 # Конвертация пунктов в см
65- if self .right_indent is not None :
66- self .right_indent = self .right_indent / 28.3464566929
67- if self .first_line_indent is not None :
68- self .first_line_indent = self .first_line_indent / 28.3464566929
69- if self .space_after is not None :
70- self .space_after = self .space_after
71- if self .space_before is not None :
72- self .space_before = self .space_before
60+ if self .paragraph_left_indent is not None :
61+ self .paragraph_left_indent = self .paragraph_left_indent . cm
62+ if self .paragraph_right_indent is not None :
63+ self .paragraph_right_indent = self .paragraph_right_indent . cm
64+ if self .paragraph_first_line_indent is not None :
65+ self .paragraph_first_line_indent = self .paragraph_first_line_indent . cm
66+ if self .paragraph_space_after is not None :
67+ self .paragraph_space_after = self .paragraph_space_after . pt
68+ if self .paragraph_space_before is not None :
69+ self .paragraph_space_before = self .paragraph_space_before . pt
7370
7471 @staticmethod
7572 def from_doc_paragraph (doc_paragraph ):
7673 """
77- Создает объект Paragraph из объекта docx.paragraphs или словаря styled_paragraphs .
74+ Создает объект Paragraph из объекта docx.paragraphs.
7875
7976 Args:
8077 doc_paragraph: Объект docx.paragraphs (для DocxUploader) или словарь (для LatexUploader).
8178
8279 Returns:
8380 Paragraph: Новый объект Paragraph с заполненными полями.
8481 """
85- from .style import Style # Импортируем Style внутри метода для избежания циклического импорта
86-
8782 if isinstance (doc_paragraph , dict ):
8883 # Для LatexUploader: обработка словаря из styled_paragraphs
8984 paragraph = Paragraph (
90- text = doc_paragraph .get ("text" , "" ),
91- runs = doc_paragraph .get ("runs" , [])
85+ paragraph_text = doc_paragraph .get ("text" , "" )
9286 )
93- # Установка стиля на основе runs, как в оригинальном __make_tmp_paragraphs
94- if paragraph . runs :
95- styles = set (style for run in paragraph . runs for style in run .get ("style" , []))
87+ # Установка стиля на основе runs, если они есть
88+ if doc_paragraph . get ( " runs" ) :
89+ styles = set (style for run in doc_paragraph . get ( " runs" , []) for style in run .get ("style" , []))
9690 paragraph .paragraph_style_name = " " .join (styles ) if styles else "Normal"
9791 return paragraph
9892 else :
9993 # Для DocxUploader: обработка объекта docx.paragraphs
10094 return Paragraph (
101- text = doc_paragraph .text if doc_paragraph .text else "" ,
95+ paragraph_text = doc_paragraph .text if doc_paragraph .text else "" ,
10296 paragraph_style_name = (doc_paragraph .style .name if doc_paragraph .style else "Normal" ),
103- runs = [{"text" : run .text , "style" : Style (run , doc_paragraph )}
104- for run in doc_paragraph .runs if run .text .strip ()] if doc_paragraph .runs else [],
105- alignment = doc_paragraph .paragraph_format .alignment ,
106- left_indent = (doc_paragraph .paragraph_format .left_indent
107- if doc_paragraph .paragraph_format .left_indent else None ),
108- right_indent = (doc_paragraph .paragraph_format .right_indent
109- if doc_paragraph .paragraph_format .right_indent else None ),
110- first_line_indent = (doc_paragraph .paragraph_format .first_line_indent
111- if doc_paragraph .paragraph_format .first_line_indent else None ),
112- space_after = (doc_paragraph .paragraph_format .space_after
113- if doc_paragraph .paragraph_format .space_after else None ),
114- space_before = (doc_paragraph .paragraph_format .space_before
115- if doc_paragraph .paragraph_format .space_before else None ),
116- line_spacing = doc_paragraph .paragraph_format .line_spacing ,
117- line_spacing_rule = doc_paragraph .paragraph_format .line_spacing_rule ,
118- keep_together = doc_paragraph .paragraph_format .keep_together ,
119- keep_with_next = doc_paragraph .paragraph_format .keep_with_next ,
120- page_break_before = doc_paragraph .paragraph_format .page_break_before ,
121- widow_control = doc_paragraph .paragraph_format .widow_control
97+ paragraph_alignment = doc_paragraph .paragraph_format .alignment ,
98+ paragraph_left_indent = (doc_paragraph .paragraph_format .left_indent
99+ if doc_paragraph .paragraph_format .left_indent else None ),
100+ paragraph_right_indent = (doc_paragraph .paragraph_format .right_indent
101+ if doc_paragraph .paragraph_format .right_indent else None ),
102+ paragraph_first_line_indent = (doc_paragraph .paragraph_format .first_line_indent
103+ if doc_paragraph .paragraph_format .first_line_indent else None ),
104+ paragraph_space_after = (doc_paragraph .paragraph_format .space_after
105+ if doc_paragraph .paragraph_format .space_after else None ),
106+ paragraph_space_before = (doc_paragraph .paragraph_format .space_before
107+ if doc_paragraph .paragraph_format .space_before else None ),
108+ paragraph_line_spacing = doc_paragraph .paragraph_format .line_spacing ,
109+ paragraph_line_spacing_rule = doc_paragraph .paragraph_format .line_spacing_rule ,
110+ paragraph_keep_together = doc_paragraph .paragraph_format .keep_together ,
111+ paragraph_keep_with_next = doc_paragraph .paragraph_format .keep_with_next ,
112+ paragraph_page_break_before = doc_paragraph .paragraph_format .page_break_before ,
113+ paragraph_widow_control = doc_paragraph .paragraph_format .widow_control
122114 )
123115
124116 def to_string (self ):
@@ -127,10 +119,12 @@ def to_string(self):
127119 """
128120 df = pandas .DataFrame ({
129121 'Values' : [
130- self .text , self .alignment , self .left_indent , self .right_indent ,
131- self .first_line_indent , self .space_after , self .space_before ,
132- self .line_spacing , self .line_spacing_rule , self .keep_together ,
133- self .keep_with_next , self .page_break_before , self .widow_control
122+ self .paragraph_text , self .paragraph_alignment , self .paragraph_left_indent ,
123+ self .paragraph_right_indent , self .paragraph_first_line_indent ,
124+ self .paragraph_space_after , self .paragraph_space_before ,
125+ self .paragraph_line_spacing , self .paragraph_line_spacing_rule ,
126+ self .paragraph_keep_together , self .paragraph_keep_with_next ,
127+ self .paragraph_page_break_before , self .paragraph_widow_control
134128 ]
135129 })
136130 df .index = [
0 commit comments