From d8af450ac7931d0b36179e7e231c53def61f4914 Mon Sep 17 00:00:00 2001
From: Kirjan Dimovski paragraph 8px paragraph 1cm paragraph 6em paragraph 12cm paragraph 12vh not supported paragraph 5pc paragraph 14pt paragraph 16pt paragraph 2mm paragraph small ',
+ level=1
+ )
+ self.parser.add_html_to_document(font_size_html_example, self.document)
+
+ document = self.parser.parse_html_string(font_size_html_example)
+ font_sizes = [str(p.runs[0].font.size) for p in document.paragraphs]
+ assert ['76200', '355600', '914400', '431800', 'None', '762000', '177800', '203200', '69850', '120650'] == font_sizes
+
+ def test_font_weight_paragraph(self):
+ self.document.add_heading('Test: font weight on ', level=1)
+ font_weight_html_example = (
+ " bold text bolder text 700 weight 900 weight normal text lighter text 400 weight 100 weight ', level=1)
+ font_style_html_example = (
+ " italic text oblique text normal text ', level=1)
+ font_family_html_example = (
+ " Arial font text Helvetica font text Noto Sans font text Times New Roman font text Generic serif font text Generic sans-serif font text Generic monospace font text Courier New font text Inherit font text ', level=1)
+ text_transform_html_example = (
+ " uppercase text LOWERCASE TEXT capitalize each word normal text default text ', level=1)
+ text_decoration_html_example = (
+ " underlined text no decoration text strikethrough text both decorations wavy underline dotted underline dashed underline double underline overline text blink text default text red text green hex text blue rgb text inherit color text transparent color text current color text red with other styles default text ', level=1)
+ line_height_html_example = (
+ " line height 1: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.15: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.5: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 2: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 20px: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.2em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.5em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 2em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.2rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.5rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 2rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 150%: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 200%: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? centered paragraph left margin 20px right margin 1.5cm left margin 1cm both margins set only left auto only right auto zero margins left margin 2in ', level=1)
+ html_example = " Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
+ Start of paragraph
+ First yellow span
+ middle text
+ Red span with white text
+ end of paragraph
+
+ Purple span with
+ nested orange
+ inside
+
+
+ Base paragraph background
+ Bold pink span
+ regular text
+
+ Green span with
+ italic blue nested
+ and more green
+
+
+ Yellow span with
+ pink nested
+ and
+ cyan underlined
+
+
+ White paragraph in gray div
+ Yellow span
+ Transparent span
+ Semi-transparent red
+
+ RGB color background
+ HSL green
+ Hex red
+ Inherit background
+ Initial background
+
+ Level 0
+
+ Level 1
+
+ Level 2
+
+ Level 3
+
+ Level 4
+
+ Level 5
+
+
+
+
+
+ Back to level 0
+
+ Paragraph with padding
+ Styled span
+ Underlined green
+ Italic Arial pink
+
+ Normal paragraph
+ Highlighted text
+ normal text
+ Green highlight
+ more normal text
+
+ Light yellow background entire paragraph
+
+ No background
+ Light red span only
+
+ Light blue background
+ Light green span
+ Light orange span
+ paragraph red line height 1: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+ doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae
+ vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
+ consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum
+ quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
+ dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
+ suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea
+ voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 1.15: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 1.5: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+ doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae
+ vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
+ consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum
+ quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
+ dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
+ suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea
+ voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 2: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+ doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae
+ vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
+ consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum
+ quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
+ dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
+ suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea
+ voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 20px: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 1.2em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 1.5em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 2em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+ doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae
+ vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia
+ consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum
+ quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et
+ dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis
+ suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea
+ voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 1.2rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 1.5rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 2rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 150%: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? line height 200%: Sed ut perspiciatis unde omnis iste natus error sit voluptatem
+ accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi
+ architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut
+ fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui
+ dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut
+ labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam
+ corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui
+ in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla
+ pariatur? ', level=1)
- line_height_html_example = (
- " line height 1: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.15: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.5: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 2: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 20px: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.2em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.5em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 2em: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.2rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 1.5rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 2rem: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 150%: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? line height 200%: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur? ', level=1)
- html_example = " Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore
- Start of paragraph
- First yellow span
- middle text
- Red span with white text
+ Start of paragraph
+ First yellow span
+ middle text
+ Red span with white text
end of paragraph
- Purple span with
- nested orange
+ Purple span with
+ nested orange
inside
paragraph red
" From a46606226ae0986004d46035878445daf642751f Mon Sep 17 00:00:00 2001 From: Kirjan Dimovskitext-indent: 3cm: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium + doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae + vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia + consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum + quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et + dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis + suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea + voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla + pariatur?
+text-indent: 20pt: Sed ut perspiciatis unde omnis iste natus error sit voluptatem + accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi + architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut + fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui + dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut + labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam + corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui + in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla + pariatur?
+text-indent: 40px: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium + doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae + vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia + consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum + quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et + dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis + suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea + voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla + pariatur?
+text-indent: 35mm: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium + doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae + vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia + consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum + quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et + dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis + suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea + voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla + pariatur?
+text-indent: 35mm: Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium + doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae + vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia + consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum + quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et + dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis + suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea + voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla + pariatur?
\ No newline at end of file diff --git a/tests/test_h4d.py b/tests/test_h4d.py index cb8bea0..7f42bcd 100644 --- a/tests/test_h4d.py +++ b/tests/test_h4d.py @@ -31,6 +31,7 @@ def setUpClass(cls): cls.document = Document() cls.text1 = cls.get_html_from_file('text1.html') cls.paragraph_line_height = cls.get_html_from_file('paragraph_line_height.html') + cls.paragraph_first_line_indent = cls.get_html_from_file('paragraph_first_line_indent.html') cls.table_html = cls.get_html_from_file('tables1.html') cls.table2_html = cls.get_html_from_file('tables2.html') cls.table3_html = cls.get_html_from_file('tables3.html') @@ -625,6 +626,29 @@ def test_text_decoration_paragraph(self): self.assertEqual(underline_states, expected_states) + def test_first_line_paragraph(self): + self.document.add_heading('Test text-indent ontags', level=1) + self.parser.add_html_to_document(self.paragraph_first_line_indent, self.document) + document = self.parser.parse_html_string(self.paragraph_first_line_indent) + + indent_values = [] + + for p in document.paragraphs: + indent_pt = p.paragraph_format.first_line_indent + if indent_pt is not None: + indent_values.append(indent_pt) + + expected_values = [ + 1080000, # 3cm + 254000, # 20pt + 381000, # 40px + 1260000, # 35mm + None, # Word does not support negative values here + ] + + for actual, expected in zip(indent_values, expected_values): + self.assertAlmostEqual(actual, expected, delta=634) + def test_color_paragraph(self): self.document.add_heading('Test: color on p tags', level=1) color_html_example = ( @@ -700,7 +724,6 @@ def test_line_height_paragraph(self): f"Line heights don't match expected values. Got {line_heights}, expected {expected_line_heights}") def test_margins_paragraph(self): - """Visual check only since there is a rounding error with twips inside python-docx""" margins_html_example = ( "
centered paragraph
" "left margin 20px
" @@ -713,12 +736,53 @@ def test_margins_paragraph(self): "left margin 2in
" ) - self.document.add_heading( - 'Test: Margins', - level=1 - ) - + self.document.add_heading('Test margins on', level=1)
self.parser.add_html_to_document(margins_html_example, self.document)
+ document = self.parser.parse_html_string(margins_html_example)
+
+ expected_margins = [
+ # Paragraph 1: "centered paragraph" - auto margins (None values)
+ {'left': None, 'right': None},
+ # Paragraph 2: "left margin 20px" - 20px = 20 * 9525 = 190500 EMU
+ {'left': 190500, 'right': None},
+ # Paragraph 3: "right margin 1.5cm" - 1.5cm = 1.5 * 360000 = 540000 EMU
+ {'left': None, 'right': 540000},
+ # Paragraph 4: "left margin 1cm" - 1cm = 360000 EMU
+ {'left': 360000, 'right': None},
+ # Paragraph 5: "both margins set" - 10px=95250 EMU, 15px=142875 EMU
+ {'left': 95250, 'right': 142875},
+ # Paragraph 6: "only left auto" - auto margin
+ {'left': None, 'right': None},
+ # Paragraph 7: "only right auto" - auto margin
+ {'left': None, 'right': None},
+ # Paragraph 8: "zero margins" - 0px = 0 EMU
+ {'left': 0, 'right': 0},
+ # Paragraph 9: "left margin 2in" - 2in = 2 * 914400 = 1828800 EMU
+ {'left': 1828800, 'right': None},
+ ]
+
+ self.assertEqual(len(document.paragraphs), len(expected_margins))
+
+ for i, paragraph in enumerate(document.paragraphs):
+ expected = expected_margins[i]
+ actual_left = paragraph.paragraph_format.left_indent
+ actual_right = paragraph.paragraph_format.right_indent
+
+ # Check left margin
+ if expected['left'] is None:
+ self.assertIsNone(actual_left, f"Paragraph {i} left margin should be None")
+ else:
+ self.assertIsNotNone(actual_left, f"Paragraph {i} left margin should not be None")
+ self.assertTrue(abs(actual_left - expected['left']) <= 634,
+ f"Paragraph {i} left margin: expected {expected['left']} EMU, got {actual_left} EMU")
+
+ # Check right margin
+ if expected['right'] is None:
+ self.assertIsNone(actual_right, f"Paragraph {i} right margin should be None")
+ else:
+ self.assertIsNotNone(actual_right, f"Paragraph {i} right margin should not be None")
+ self.assertTrue(abs(actual_right - expected['right']) <= 634,
+ f"Paragraph {i} right margin: expected {expected['right']} EMU, got {actual_right} EMU")
def test_background_color_styles(self):
html_example2 = """
From f0041d9ba9cd82bb8b6d8d8d2fffb5c5a162d45d Mon Sep 17 00:00:00 2001
From: Kirjan Dimovski , multiple cases', level=1)
html_example2 = """
Start of paragraph
@@ -822,21 +823,17 @@ def test_background_color_styles(self):
self.parser.add_html_to_document(html_example3, self.document)
html_example4 = """
-
- White paragraph in gray div
- Yellow span
- Transparent span
- Semi-transparent red
-
+ White paragraph
+ Yellow span
+ Transparent span
+
RGB color background
- HSL green
Hex red
Inherit background
Initial background
From 22fbd9f61ba5386b351da5e06ef3fe2204b97096 Mon Sep 17 00:00:00 2001
From: Kirjan Dimovski
+ Paragraph with all styles
+
+ Span overriding all styles
+
+ Text inheriting paragraph styles again
+
+ Paragraph with individual text-decoration properties
+
+ Span removing underline but keeping other styles
+
+ Text continuing with paragraph styles
+
+ Paragraph with numeric and complex values
+ Span adding oblique and changing underline style only
+ Normal text continuing
+
+ Span with only background color (should inherit other styles)
+
+
+ Paragraph with font fallback and text case
+
+ Span only bolding (should inherit font, color, transform)
+
+
+ Span changing color and removing transform only
+
+ Final text with original styles
+
+ Paragraph with multiple decorations and named size
+
+ Span simplifying decorations and changing size
+
+
+ Plain span inheriting everything
+
+
+ Span with weight and normal style only
+
+
+ Reset paragraph
+
+ Span with completely different styles
+
+ Back to reset styles
+
+ Testing text-decoration shorthand vs longhand
+
+ Span using longhand to override shorthand
+
+
+ Span using different shorthand
+
+
+ Small gray text
+
+ Span with RGB color
+
+
+ Span with RGBA background
+
+
+ Paragraph with less common values
+
+ Span with numeric weight and normal style
+
+ Continuing with original styles
+
+ Paragraph with advanced formatting: margins, justification, line height, and text indent.
+ Bold span inheriting paragraph formatting
+ Continuing text that should maintain all paragraph styles including justified alignment.
+
+ Centered paragraph with auto margins
+ Span trying to override alignment (should not work)
+ Still centered text
+
+ text decorations with double style
+ Span changing only the style
+ Span changing only the color
+
+ Testing unit conversions and line height
+ Span with relative font size
+ Span with percentage font size
+ Span with pixel font size
+ Text with original 12pt size
+
+ Testing font fallback chain
+ Span switching to generic sans-serif
+ Back to original font stack
+
+ Testing HSL colors
+ Span with HSLA color
+ Span with red HSL background
+
+ Testing blink and overline (unsupported features)
+ Span with supported underline only
+ Text with original (partially supported) styles
+
+ Testing CSS keywords
+ Span with inherit color
+ Span with initial background
+ Span with unset font size
+
+ Testing !important declarations
+ Span with important normal weight
+ Span with important no decoration
+ Text that should respect important styles
+
+ Mixed valid and invalid properties
+ Span with invalid decoration style
+ Span with invalid color
+
+ Testing various units and normal values
+ Span with named font size
+ Span with percentage line height
+
+ Testing unsupported CSS3 properties
+ Span with box-shadow (unsupported)
+ Span with opacity (unsupported)
+
+ Plain paragraph with no styles
+
+ Span with all run styles applied individually
+
+ Back to plain text
+
+ Testing minimum values
+
+ Span with maximum values
+
+ Back to minimum values
+
+ Testing text-decoration inheritance
+
+ Plain span inheriting decoration
+
+
+ Span explicitly inheriting decoration line
+
+
+ Span explicitly inheriting decoration color
+
+
+ Testing edge case values
+ Span with very large font and visible color
+ Span inheriting edge values
+ Normal text wavy underlined span (blue)continues
+ Normal text dotted underlined span (purple)continues
+ Normal text strikethrough span (red) continues
+ Normal text overline span (orange) continues
+ Start underlined
+ strikethrough
+ dashed underline
+ wavy overline
+ end
+ Underlined paragraph with
+ normal span inside Strikethrough paragraph with
+ underlined red span inside Outer blue underline with
+ red strikethrough inside
+ continues blue underline normal text Dotted green
+ underlined paragraph Wavy purple
+ strikethrough paragraph Double teal
+ overline paragraph Dark blue underlined paragraph with
+ wavy coral strikethrough span
+
+ and gold overline+underline span
+ Base text just line
+ just color
+ just style
+ line and color
+ line and style
+ color and style
+ all properties
+ Normal text wavy underlined span (blue) continues Normal text dotted underlined span (purple) continues Normal text strikethrough span (red) continues Start underlined "
+ "strikethrough "
+ "dashed underline end Underlined paragraph with "
+ "normal span inside Strikethrough paragraph with "
+ "underlined red span inside Blue underlined paragraph with "
+ "strikethrough span inside Blue underlined paragraph Blue underlined paragraph ', level=1)
text_decoration_html_example = (
- " underlined text no decoration text strikethrough text both decorations wavy underline dotted underline dashed underline double underline overline text blink text default text underlined text (red) no decoration text (rgb(0, 0, 0)) strikethrough text (gray) (color not supported) underline+line-through (orange)\
+ (should be strike) wavy underline (blue) dotted underline (rgb(0, 128, 0)) dotted underline (rgb(0, 255, 0)) dashed underline (purple) double underline (rgb(255, 69, 0)) overline text (hotpink) (not supported) blink text (hotpink) (not supported) tags', level=1)
@@ -901,6 +1010,172 @@ def test_background_color_styles(self):
"""
self.parser.add_html_to_document(html_example9, self.document)
+ def test_headers_with_css(self):
+ self.document.add_heading('Test: headers with css', level=1)
+ self.parser.add_html_to_document(self.css_properties_header, self.document)
+
+ document = self.parser.parse_html_string(self.css_properties_header)
+
+ # Test H1 - Large and Centered
+ h1 = document.paragraphs[0]
+ assert h1.style.name.startswith('Heading 1')
+ assert str(h1.runs[0].font.color.rgb) == '2C3E50'
+ assert h1.runs[0].font.bold is True
+ assert h1.runs[0].font.size == 342900
+ assert h1.alignment == WD_ALIGN_PARAGRAPH.CENTER
+ assert h1.runs[0].text == 'MAIN HEADING H1 - LARGE AND CENTERED' # uppercase due to text-transform
+
+ # Test H2 - Underlined with Background (no span in this one)
+ h2 = document.paragraphs[1]
+ assert h2.style.name.startswith('Heading 2')
+ assert str(h2.runs[0].font.color.rgb) == '34495E'
+ assert h2.runs[0].font.underline is True
+ assert h2.runs[0].font.name == 'Arial'
+ assert h2.runs[0].font.size == 266700
+
+ # Test H3 - Italic and Right Aligned
+ h3 = document.paragraphs[2]
+ assert h3.style.name.startswith('Heading 3')
+ assert str(h3.runs[0].font.color.rgb) == '7F8C8D'
+ assert h3.runs[0].font.italic is True
+ assert h3.runs[0].font.size == 209550
+ assert h3.alignment == WD_ALIGN_PARAGRAPH.RIGHT
+
+ # Test H4 - Normal Weight and Capitalized
+ h4 = document.paragraphs[3]
+ assert h4.style.name.startswith('Heading 4')
+ assert str(h4.runs[0].font.color.rgb) == '95A5A6'
+ assert h4.runs[0].font.bold is False # font-weight: normal
+ assert h4.runs[0].font.name == 'Georgia'
+ assert h4.runs[0].font.size == 171450
+ assert h4.runs[0].text == 'Quaternary Heading H4 - Normal Weight And Capitalized' # capitalized
+
+ # Test H1 with Complex Text Decoration and Span
+ h1_complex = document.paragraphs[4]
+ assert h1_complex.runs[0].font.strike is True # line-through
+ assert str(h1_complex.runs[0].font.color.rgb) == '8E44AD'
+ assert h1_complex.runs[0].font.size == 381000
+
+ # Test span in complex H1
+ assert len(h1_complex.runs) >= 2
+ span_in_h1 = h1_complex.runs[1]
+ assert span_in_h1.font.underline is True # underline in span
+ assert str(span_in_h1.font.color.rgb) == '2980B9'
+
+ # Test H3 with Light Weight and Span
+ h3_light = document.paragraphs[5]
+ assert h3_light.runs[0].font.bold is False # font-weight: 100
+ assert str(h3_light.runs[0].font.color.rgb) == 'D35400'
+ assert h3_light.runs[0].font.size == 190500
+
+ # Test bold span in light H3
+ assert len(h3_light.runs) >= 2
+ bold_span = h3_light.runs[1]
+ assert bold_span.font.bold is True # font-weight: 900
+
+ # Test H3 with Text Transform
+ h3_transform = document.paragraphs[6]
+ assert h3_transform.runs[0].text == 'h3 forced to lowercase with text-transform '
+ assert len(h3_transform.runs) >= 2
+ uppercase_span = h3_transform.runs[1]
+ assert uppercase_span.text == 'SPAN FORCED TO UPPERCASE'
+
+ # Test H4 with Serif Font
+ h4_serif = document.paragraphs[7]
+ assert h4_serif.runs[0].font.name == 'Times New Roman'
+ assert str(h4_serif.runs[0].font.color.rgb) == '7D3C98'
+ assert h4_serif.alignment == WD_ALIGN_PARAGRAPH.CENTER
+
+ # Test H1 with Auto Margins and Background
+ h1_centered = document.paragraphs[8]
+ assert h1_centered.alignment == WD_ALIGN_PARAGRAPH.CENTER
+ assert str(h1_centered.runs[0].font.color.rgb) == 'FFFFFF'
+
+ # Test H2 with Lighter Weight and Span
+ h2_lighter = document.paragraphs[9]
+ assert h2_lighter.runs[0].font.bold is False # lighter weight
+ assert h2_lighter.runs[0].font.underline == WD_UNDERLINE.DOTTED
+ assert h2_lighter.runs[0].font.size == 228600
+
+ # Test bolder span
+ assert len(h2_lighter.runs) >= 2
+ bolder_span = h2_lighter.runs[1]
+ assert bolder_span.font.bold is True # bolder
+
+ # Test H3 with RGB Colors and Span
+ h3_rgb = document.paragraphs[10]
+ assert str(h3_rgb.runs[0].font.color.rgb) == '3498DB' # rgb(52, 152, 219)
+ assert h3_rgb.runs[0].font.size == 177800
+
+ # Test RGB span
+ assert len(h3_rgb.runs) >= 2
+ rgb_span = h3_rgb.runs[1]
+ assert str(rgb_span.font.color.rgb) == 'E74C3C' # rgb(231, 76, 60)
+
+ # Test H4 with Strike-through and Span
+ h4_strike = document.paragraphs[11]
+ assert h4_strike.runs[0].font.strike is True
+ assert h4_strike.runs[0].font.bold is False # font-weight: 300
+
+ # Test span without strike-through
+ assert len(h4_strike.runs) >= 2
+ no_strike_span = h4_strike.runs[1]
+ assert no_strike_span.font.strike is False
+ assert str(no_strike_span.font.color.rgb) == 'E74C3C'
+
+ # Test H3 with Unsupported Transform and Span
+ h3_unsupported = document.paragraphs[12]
+ assert str(h3_unsupported.runs[0].font.color.rgb) == 'F39C12'
+ assert h3_unsupported.runs[0].font.size == 196850
+
+ # Test supported transform in span
+ assert len(h3_unsupported.runs) >= 2
+ supported_span = h3_unsupported.runs[1]
+ assert supported_span.text == 'Supported Transform In Span' # capitalize
+
+ # Test H4 with Reset Styles and Span
+ h4_reset = document.paragraphs[13]
+ assert h4_reset.runs[0].font.bold is True # font-weight: 700
+ assert h4_reset.runs[0].font.italic is False # font-style: normal
+ assert h4_reset.runs[0].font.underline is False # text-decoration: none
+
+ # Test styled span
+ assert len(h4_reset.runs) >= 2
+ styled_span = h4_reset.runs[1]
+ assert styled_span.font.bold is False # font-weight: 400
+ assert styled_span.font.italic is True
+ assert styled_span.font.underline is True
+
+ # Test H1 with Text Color and Span
+ h1_transparent = document.paragraphs[14]
+ assert h1_transparent.runs[0].font.size == 361950
+ visible_span = h1_transparent.runs[1]
+ assert str(visible_span.font.color.rgb) == 'ECF0F1'
+
+ # Test H3 with All Three Decorations and Span
+ h3_all_decorations = document.paragraphs[15]
+ assert h3_all_decorations.runs[0].font.strike is True
+ assert h3_all_decorations.runs[0].font.underline is False
+
+ # Test span with single decoration
+ assert len(h3_all_decorations.runs) >= 2
+ single_decoration_span = h3_all_decorations.runs[1]
+ assert single_decoration_span.font.underline is True
+
+ # Test H2 with Middle Weight and Span
+ h2_middle = document.paragraphs[16]
+ assert h2_middle.runs[0].font.bold is False
+
+ # Test darker span
+ assert len(h2_middle.runs) >= 2
+ darker_span = h2_middle.runs[1]
+ assert darker_span.font.bold is False
+
+ # Test H4 with Style and Span
+ h4_style = document.paragraphs[17]
+ assert h4_style.runs[0].font.underline is WD_UNDERLINE.WAVY
+ assert h4_style.runs[1].font.underline is WD_UNDERLINE.DOUBLE
+
def test_color_by_name(self):
color_html_example = (
" paragraph red and | `Lynuxen and \
+ Main Heading H1 - Large and Centered
+
+
+
+ Secondary Heading H2 - Underlined with Background
+
+
+
+ Tertiary Heading H3 - Italic and Right Aligned
+
+
+
+ quaternary heading H4 - normal weight and capitalized
+
+
+
+ Strikethrough H1 with Complex Decoration Underlined Span in H1
+
+
+
+ Light Weight H3 with Text Indent Bold Span in Light Heading
+
+
+
+ H3 FORCED TO LOWERCASE WITH TEXT-TRANSFORM span forced to uppercase
+
+
+
+ H4 with Serif Font
+
+
+
+ Centered H1 with Auto Margins and Background
+
+
+
+ H2 with Lighter Weight and Dotted Underline Bolder Span with Solid Underline
+
+
+
+ H3 with RGB and Colors Span with Different RGB Colors
+
+
+
+ H4 with Strike-through and Light Weight Important Note Without Strike-through
+
+
+
+ H3 with Unsupported Text Transform Supported transform in span
+
+
+
+ Plain H4 with Reset Styles Styled Span in Plain Heading
+
+
+
+ H1 with Text Color Visible Span in Transparent Heading
+
+
+
+ H3 with All Three Decorations Span with Single Decoration
+
+
+
+ H2 with Middle Weight and Justified Text Darker Span in Middle Weight Heading
+
+
+
+ H4 with Style Valid Style Span
+
\ No newline at end of file
diff --git a/tests/assets/htmls/text_decoration.html b/tests/assets/htmls/text_decoration.html
new file mode 100644
index 0000000..40cb7ed
--- /dev/null
+++ b/tests/assets/htmls/text_decoration.html
@@ -0,0 +1,60 @@
+underlined span (red)
+no decoration span (rgb(0, 0, 0))
+strikethrough span (gray)
+underline+line-through span (orange)
+wavy underlined span (blue)
+dotted underlined span (purple)
+dashed underlined span (green)
+double underlined span (brown)
+