-
-
Notifications
You must be signed in to change notification settings - Fork 705
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add partial support for column-span property. #878
Conversation
Related to #719.
Version 50 ---------- Released on 2019-09-19. New features: * `#209 <https://github.com/Kozea/WeasyPrint/issues/209>`_: Make ``break-*`` properties work inside tables * `#661 <https://github.com/Kozea/WeasyPrint/issues/661>`_: Make blocks with ``overflow: auto`` grow to include floating children Bug fixes: * `#945 <https://github.com/Kozea/WeasyPrint/issues/945>`_: Don't break pages between a list item and its marker * `#727 <https://github.com/Kozea/WeasyPrint/issues/727>`_: Avoid tables lost between pages * `#831 <https://github.com/Kozea/WeasyPrint/issues/831>`_: Ignore auto margins on flex containers * `#923 <https://github.com/Kozea/WeasyPrint/issues/923>`_: Fix a couple of crashes when splitting a line twice * `#896 <https://github.com/Kozea/WeasyPrint/issues/896>`_: Fix skip stack order when using a reverse flex direction Contributors: - grewn0uille - Guillaume Ayoub Version 49 ---------- Released on 2019-09-11. Performance: * Speed and memory use have been largely improved. New features: * `#700 <https://github.com/Kozea/WeasyPrint/issues/700>`_: Handle ``::marker`` pseudo-selector * `135dc06c <https://github.com/Kozea/WeasyPrint/commit/135dc06c>`_: Handle ``recto`` and ``verso`` parameters for page breaks * `#907 <https://github.com/Kozea/WeasyPrint/pull/907>`_: Provide a clean way to build layout contexts Bug fixes: * `#937 <https://github.com/Kozea/WeasyPrint/issues/937>`_: Fix rendering of tables with empty lines and rowspans * `#897 <https://github.com/Kozea/WeasyPrint/issues/897>`_: Don't crash when small columns are wrapped in absolute blocks * `#913 <https://github.com/Kozea/WeasyPrint/issues/913>`_: Fix a test about gradient colors * `#924 <https://github.com/Kozea/WeasyPrint/pull/924>`_: Fix title for document with attachments * `#917 <https://github.com/Kozea/WeasyPrint/issues/917>`_: Fix tests with Pango 1.44 * `#919 <https://github.com/Kozea/WeasyPrint/issues/919>`_: Fix padding and margin management for column flex boxes * `#901 <https://github.com/Kozea/WeasyPrint/issues/901>`_: Fix width of replaced boxes with no intrinsic width * `#906 <https://github.com/Kozea/WeasyPrint/issues/906>`_: Don't respect table cell width when content doesn't fit * `#927 <https://github.com/Kozea/WeasyPrint/pull/927>`_: Don't use deprecated ``logger.warn`` anymore * `a8662794 <https://github.com/Kozea/WeasyPrint/commit/a8662794>`_: Fix margin collapsing between caption and table wrapper * `87d9e84f <https://github.com/Kozea/WeasyPrint/commit/87d9e84f>`_: Avoid infinite loops when rendering columns * `789b80e6 <https://github.com/Kozea/WeasyPrint/commit/789b80e6>`_: Only use in flow children to set columns height * `615e298a <https://github.com/Kozea/WeasyPrint/commit/615e298a>`_: Don't include floating elements each time we try to render a column * `48d8632e <https://github.com/Kozea/WeasyPrint/commit/48d8632e>`_: Avoid not in flow children to compute column height * `e7c452ce <https://github.com/Kozea/WeasyPrint/commit/e7c452ce>`_: Fix collapsing margins for columns * `fb0887cf <https://github.com/Kozea/WeasyPrint/commit/fb0887cf>`_: Fix crash when using currentColor in gradients * `f66df067 <https://github.com/Kozea/WeasyPrint/commit/f66df067>`_: Don't crash when using ex units in word-spacing in letter-spacing * `c790ff20 <https://github.com/Kozea/WeasyPrint/commit/c790ff20>`_: Don't crash when properties needing base URL use var functions * `d63eac31 <https://github.com/Kozea/WeasyPrint/commit/d63eac31>`_: Don't crash with object-fit: non images with no intrinsic size Documentation: * `#900 <https://github.com/Kozea/WeasyPrint/issues/900>`_: Add documentation about semantic versioning * `#692 <https://github.com/Kozea/WeasyPrint/issues/692>`_: Add a snippet about PDF magnification * `#899 <https://github.com/Kozea/WeasyPrint/pull/899>`_: Add .NET wrapper link * `#893 <https://github.com/Kozea/WeasyPrint/pull/893>`_: Fixed wrong nested list comprehension example * `#902 <https://github.com/Kozea/WeasyPrint/pull/902>`_: Add ``state`` to the ``make_bookmark_tree`` documentation * `#921 <https://github.com/Kozea/WeasyPrint/pull/921>`_: Fix typos in the documentation * `#328 <https://github.com/Kozea/WeasyPrint/issues/328>`_: Add CSS sample for forms Contributors: - grewn0uille - Guillaume Ayoub - Raphael Gaschignard - Stani - Szmen - Thomas Dexter - Tontyna Version 48 ---------- Released on 2019-07-08. Dependencies: * CairoSVG 2.4.0+ is now needed New features: * `#891 <https://github.com/Kozea/WeasyPrint/pull/891>`_: Handle ``text-overflow`` * `#878 <https://github.com/Kozea/WeasyPrint/pull/878>`_: Handle ``column-span`` * `#855 <https://github.com/Kozea/WeasyPrint/pull/855>`_: Handle all the ``text-decoration`` features * `#238 <https://github.com/Kozea/WeasyPrint/issues/238>`_: Don't repeat background images when it's not needed * `#875 <https://github.com/Kozea/WeasyPrint/issues/875>`_: Handle ``object-fit`` and ``object-position`` * `#870 <https://github.com/Kozea/WeasyPrint/issues/870>`_: Handle ``bookmark-state`` Bug fixes: * `#686 <https://github.com/Kozea/WeasyPrint/issues/686>`_: Fix column balance when children are not inline * `#885 <https://github.com/Kozea/WeasyPrint/issues/885>`_: Actually use the content box to resolve flex items percentages * `#867 <https://github.com/Kozea/WeasyPrint/issues/867>`_: Fix rendering of KaTeX output, including (1) set row baseline of tables when no cells are baseline-aligned, (2) set baseline for inline tables, (3) don't align lines larger than their parents, (4) force CairoSVG to respect image size defined by CSS. * `#873 <https://github.com/Kozea/WeasyPrint/issues/873>`_: Set a minimum height for empty list elements with outside marker * `#811 <https://github.com/Kozea/WeasyPrint/issues/811>`_: Don't use translations to align flex items * `#851 <https://github.com/Kozea/WeasyPrint/issues/851>`_, `#860 <https://github.com/Kozea/WeasyPrint/issues/860>`_: Don't cut pages when content overflows a very little bit * `#862 <https://github.com/Kozea/WeasyPrint/issues/862>`_: Don't crash when using UTC dates in metadata Documentation: * `#854 <https://github.com/Kozea/WeasyPrint/issues/854>`_: Add a "Tips & Tricks" section Contributors: - Gabriel Corona - Guillaume Ayoub - Manuel Barkhau - Nathan de Maestri - grewn0uille - theopeek Version 47 ---------- Released on 2019-04-12. New features: * `#843 <https://github.com/Kozea/WeasyPrint/pull/843>`_: Handle CSS variables * `#846 <https://github.com/Kozea/WeasyPrint/pull/846>`_: Handle ``:nth()`` page selector * `#847 <https://github.com/Kozea/WeasyPrint/pull/847>`_: Allow users to use a custom SSL context for HTTP requests Bug fixes: * `#797 <https://github.com/Kozea/WeasyPrint/issues/797>`_: Fix underlined justified text * `#836 <https://github.com/Kozea/WeasyPrint/issues/836>`_: Fix crash when flex items are replaced boxes * `#835 <https://github.com/Kozea/WeasyPrint/issues/835>`_: Fix ``margin-break: auto`` Version 46 ---------- Released on 2019-03-20. New features: * `#771 <https://github.com/Kozea/WeasyPrint/issues/771>`_: Handle ``box-decoration-break`` * `#115 <https://github.com/Kozea/WeasyPrint/issues/115>`_: Handle ``margin-break`` * `#821 <https://github.com/Kozea/WeasyPrint/issues/821>`_: Continuous integration includes tests on Windows Bug fixes: * `#765 <https://github.com/Kozea/WeasyPrint/issues/765>`_, `#754 <https://github.com/Kozea/WeasyPrint/issues/754>`_, `#800 <https://github.com/Kozea/WeasyPrint/issues/800>`_: Fix many crashes related to the flex layout * `#783 <https://github.com/Kozea/WeasyPrint/issues/783>`_: Fix a couple of crashes with strange texts * `#827 <https://github.com/Kozea/WeasyPrint/pull/827>`_: Named strings and counters are case-sensitive * `#823 <https://github.com/Kozea/WeasyPrint/pull/823>`_: Shrink min/max-height/width according to box-sizing * `#728 <https://github.com/Kozea/WeasyPrint/issues/728>`_, `#171 <https://github.com/Kozea/WeasyPrint/issues/171>`_: Don't crash when fixed boxes are nested * `#610 <https://github.com/Kozea/WeasyPrint/issues/610>`_, `#828 <https://github.com/Kozea/WeasyPrint/issues/828>`_: Don't crash when preformatted text lines end with a space * `#808 <https://github.com/Kozea/WeasyPrint/issues/808>`_, `#387 <https://github.com/Kozea/WeasyPrint/issues/387>`_: Fix position of some images * `#813 <https://github.com/Kozea/WeasyPrint/issues/813>`_: Don't crash when long preformatted text lines end with ``\n`` Documentation: * `#815 <https://github.com/Kozea/WeasyPrint/pull/815>`_: Add documentation about custom ``url_fetcher``
Version 50 ---------- Released on 2019-09-19. New features: * `#209 <https://github.com/Kozea/WeasyPrint/issues/209>`_: Make ``break-*`` properties work inside tables * `#661 <https://github.com/Kozea/WeasyPrint/issues/661>`_: Make blocks with ``overflow: auto`` grow to include floating children Bug fixes: * `#945 <https://github.com/Kozea/WeasyPrint/issues/945>`_: Don't break pages between a list item and its marker * `#727 <https://github.com/Kozea/WeasyPrint/issues/727>`_: Avoid tables lost between pages * `#831 <https://github.com/Kozea/WeasyPrint/issues/831>`_: Ignore auto margins on flex containers * `#923 <https://github.com/Kozea/WeasyPrint/issues/923>`_: Fix a couple of crashes when splitting a line twice * `#896 <https://github.com/Kozea/WeasyPrint/issues/896>`_: Fix skip stack order when using a reverse flex direction Contributors: - grewn0uille - Guillaume Ayoub Version 49 ---------- Released on 2019-09-11. Performance: * Speed and memory use have been largely improved. New features: * `#700 <https://github.com/Kozea/WeasyPrint/issues/700>`_: Handle ``::marker`` pseudo-selector * `135dc06c <https://github.com/Kozea/WeasyPrint/commit/135dc06c>`_: Handle ``recto`` and ``verso`` parameters for page breaks * `#907 <https://github.com/Kozea/WeasyPrint/pull/907>`_: Provide a clean way to build layout contexts Bug fixes: * `#937 <https://github.com/Kozea/WeasyPrint/issues/937>`_: Fix rendering of tables with empty lines and rowspans * `#897 <https://github.com/Kozea/WeasyPrint/issues/897>`_: Don't crash when small columns are wrapped in absolute blocks * `#913 <https://github.com/Kozea/WeasyPrint/issues/913>`_: Fix a test about gradient colors * `#924 <https://github.com/Kozea/WeasyPrint/pull/924>`_: Fix title for document with attachments * `#917 <https://github.com/Kozea/WeasyPrint/issues/917>`_: Fix tests with Pango 1.44 * `#919 <https://github.com/Kozea/WeasyPrint/issues/919>`_: Fix padding and margin management for column flex boxes * `#901 <https://github.com/Kozea/WeasyPrint/issues/901>`_: Fix width of replaced boxes with no intrinsic width * `#906 <https://github.com/Kozea/WeasyPrint/issues/906>`_: Don't respect table cell width when content doesn't fit * `#927 <https://github.com/Kozea/WeasyPrint/pull/927>`_: Don't use deprecated ``logger.warn`` anymore * `a8662794 <https://github.com/Kozea/WeasyPrint/commit/a8662794>`_: Fix margin collapsing between caption and table wrapper * `87d9e84f <https://github.com/Kozea/WeasyPrint/commit/87d9e84f>`_: Avoid infinite loops when rendering columns * `789b80e6 <https://github.com/Kozea/WeasyPrint/commit/789b80e6>`_: Only use in flow children to set columns height * `615e298a <https://github.com/Kozea/WeasyPrint/commit/615e298a>`_: Don't include floating elements each time we try to render a column * `48d8632e <https://github.com/Kozea/WeasyPrint/commit/48d8632e>`_: Avoid not in flow children to compute column height * `e7c452ce <https://github.com/Kozea/WeasyPrint/commit/e7c452ce>`_: Fix collapsing margins for columns * `fb0887cf <https://github.com/Kozea/WeasyPrint/commit/fb0887cf>`_: Fix crash when using currentColor in gradients * `f66df067 <https://github.com/Kozea/WeasyPrint/commit/f66df067>`_: Don't crash when using ex units in word-spacing in letter-spacing * `c790ff20 <https://github.com/Kozea/WeasyPrint/commit/c790ff20>`_: Don't crash when properties needing base URL use var functions * `d63eac31 <https://github.com/Kozea/WeasyPrint/commit/d63eac31>`_: Don't crash with object-fit: non images with no intrinsic size Documentation: * `#900 <https://github.com/Kozea/WeasyPrint/issues/900>`_: Add documentation about semantic versioning * `#692 <https://github.com/Kozea/WeasyPrint/issues/692>`_: Add a snippet about PDF magnification * `#899 <https://github.com/Kozea/WeasyPrint/pull/899>`_: Add .NET wrapper link * `#893 <https://github.com/Kozea/WeasyPrint/pull/893>`_: Fixed wrong nested list comprehension example * `#902 <https://github.com/Kozea/WeasyPrint/pull/902>`_: Add ``state`` to the ``make_bookmark_tree`` documentation * `#921 <https://github.com/Kozea/WeasyPrint/pull/921>`_: Fix typos in the documentation * `#328 <https://github.com/Kozea/WeasyPrint/issues/328>`_: Add CSS sample for forms Contributors: - grewn0uille - Guillaume Ayoub - Raphael Gaschignard - Stani - Szmen - Thomas Dexter - Tontyna Version 48 ---------- Released on 2019-07-08. Dependencies: * CairoSVG 2.4.0+ is now needed New features: * `#891 <https://github.com/Kozea/WeasyPrint/pull/891>`_: Handle ``text-overflow`` * `#878 <https://github.com/Kozea/WeasyPrint/pull/878>`_: Handle ``column-span`` * `#855 <https://github.com/Kozea/WeasyPrint/pull/855>`_: Handle all the ``text-decoration`` features * `#238 <https://github.com/Kozea/WeasyPrint/issues/238>`_: Don't repeat background images when it's not needed * `#875 <https://github.com/Kozea/WeasyPrint/issues/875>`_: Handle ``object-fit`` and ``object-position`` * `#870 <https://github.com/Kozea/WeasyPrint/issues/870>`_: Handle ``bookmark-state`` Bug fixes: * `#686 <https://github.com/Kozea/WeasyPrint/issues/686>`_: Fix column balance when children are not inline * `#885 <https://github.com/Kozea/WeasyPrint/issues/885>`_: Actually use the content box to resolve flex items percentages * `#867 <https://github.com/Kozea/WeasyPrint/issues/867>`_: Fix rendering of KaTeX output, including (1) set row baseline of tables when no cells are baseline-aligned, (2) set baseline for inline tables, (3) don't align lines larger than their parents, (4) force CairoSVG to respect image size defined by CSS. * `#873 <https://github.com/Kozea/WeasyPrint/issues/873>`_: Set a minimum height for empty list elements with outside marker * `#811 <https://github.com/Kozea/WeasyPrint/issues/811>`_: Don't use translations to align flex items * `#851 <https://github.com/Kozea/WeasyPrint/issues/851>`_, `#860 <https://github.com/Kozea/WeasyPrint/issues/860>`_: Don't cut pages when content overflows a very little bit * `#862 <https://github.com/Kozea/WeasyPrint/issues/862>`_: Don't crash when using UTC dates in metadata Documentation: * `#854 <https://github.com/Kozea/WeasyPrint/issues/854>`_: Add a "Tips & Tricks" section Contributors: - Gabriel Corona - Guillaume Ayoub - Manuel Barkhau - Nathan de Maestri - grewn0uille - theopeek Version 47 ---------- Released on 2019-04-12. New features: * `#843 <https://github.com/Kozea/WeasyPrint/pull/843>`_: Handle CSS variables * `#846 <https://github.com/Kozea/WeasyPrint/pull/846>`_: Handle ``:nth()`` page selector * `#847 <https://github.com/Kozea/WeasyPrint/pull/847>`_: Allow users to use a custom SSL context for HTTP requests Bug fixes: * `#797 <https://github.com/Kozea/WeasyPrint/issues/797>`_: Fix underlined justified text * `#836 <https://github.com/Kozea/WeasyPrint/issues/836>`_: Fix crash when flex items are replaced boxes * `#835 <https://github.com/Kozea/WeasyPrint/issues/835>`_: Fix ``margin-break: auto`` Version 46 ---------- Released on 2019-03-20. New features: * `#771 <https://github.com/Kozea/WeasyPrint/issues/771>`_: Handle ``box-decoration-break`` * `#115 <https://github.com/Kozea/WeasyPrint/issues/115>`_: Handle ``margin-break`` * `#821 <https://github.com/Kozea/WeasyPrint/issues/821>`_: Continuous integration includes tests on Windows Bug fixes: * `#765 <https://github.com/Kozea/WeasyPrint/issues/765>`_, `#754 <https://github.com/Kozea/WeasyPrint/issues/754>`_, `#800 <https://github.com/Kozea/WeasyPrint/issues/800>`_: Fix many crashes related to the flex layout * `#783 <https://github.com/Kozea/WeasyPrint/issues/783>`_: Fix a couple of crashes with strange texts * `#827 <https://github.com/Kozea/WeasyPrint/pull/827>`_: Named strings and counters are case-sensitive * `#823 <https://github.com/Kozea/WeasyPrint/pull/823>`_: Shrink min/max-height/width according to box-sizing * `#728 <https://github.com/Kozea/WeasyPrint/issues/728>`_, `#171 <https://github.com/Kozea/WeasyPrint/issues/171>`_: Don't crash when fixed boxes are nested * `#610 <https://github.com/Kozea/WeasyPrint/issues/610>`_, `#828 <https://github.com/Kozea/WeasyPrint/issues/828>`_: Don't crash when preformatted text lines end with a space * `#808 <https://github.com/Kozea/WeasyPrint/issues/808>`_, `#387 <https://github.com/Kozea/WeasyPrint/issues/387>`_: Fix position of some images * `#813 <https://github.com/Kozea/WeasyPrint/issues/813>`_: Don't crash when long preformatted text lines end with ``\n`` Documentation: * `#815 <https://github.com/Kozea/WeasyPrint/pull/815>`_: Add documentation about custom ``url_fetcher``
Hey liZe! This new balancing algorithm is the cause of quite a big slowdown in document generation in our projects. We have several documents with colspans>=2 that span multiple pages and contain complex block stuff. Rendering all columns content on every pixel the height is increased was getting to slow. 90mins for 230 pages.. While keeping the basic idea alive instead of a linear scan to find the smallest columns height for a "balanced" layout I implemented a simple binary search. # Balance.
#
# The current algorithm starts from the ideal height (the total height
# divided by the number of columns). We then iterate until the last column
# is not the highest one. At the end of each loop, we add the minimal
# height needed to make one direct child at the top of one column go to the
# end of the previous column.
#
# We rely on a real rendering for each loop, and with a scanning algorithm
# like this it can last minutes…
adjoining_margins = []
current_position_y = box.content_box_y()
new_children = []
for column_children_or_block in columns_and_blocks:
if not isinstance(column_children_or_block, list):
# We get a spanning block, we display it like other blocks.
block = column_children_or_block
resolve_percentages(block, containing_block)
block.position_x = box.content_box_x()
block.position_y = current_position_y
new_child, _, _, adjoining_margins, _ = block_level_layout(
context, block, original_max_position_y, skip_stack,
containing_block, page_is_empty, absolute_boxes, fixed_boxes,
adjoining_margins)
new_children.append(new_child)
current_position_y = (
new_child.border_height() + new_child.border_box_y())
adjoining_margins.append(new_child.margin_bottom)
continue
excluded_shapes = context.excluded_shapes[:]
# We have a list of children that we have to balance between columns.
column_children = column_children_or_block
# Find the total height of the content
current_position_y += collapse_margin(adjoining_margins)
adjoining_margins = []
column_box = create_column_box(column_children)
new_child, _, _, _, _ = block_box_layout(
context, column_box, float('inf'), skip_stack, containing_block,
page_is_empty, [], [], [])
height = new_child.margin_height()
total_height = height
if style['column_fill'] == 'balance':
height /= count
# Try to render columns until the content fits, increase the column
# height step by step by binary search limits.
# helper to derive the step_size
def step_size_calc(value):
return max(1, value)
# coercing to power of 2 has no benefit, but increases number of steps..
# result = round(value).bit_length()
# return 1 if result == 0 else 1 << result-1
# difference between upper and lower height is the current search step size
# start value is arbitrary height / 4
step_size = step_size_calc((height)/4)
lower_height = height
upper_height = 0
# while the right height has not been found
while True:
column_skip_stack = skip_stack
# Remove extra excluded shapes introduced during previous loop
new_excluded_shapes = (
len(context.excluded_shapes) - len(excluded_shapes))
for i in range(new_excluded_shapes):
context.excluded_shapes.pop()
# through all columns
for i in range(count):
# render the column.
new_box, resume_at, next_page, _, _ = block_box_layout(
context, column_box, box.content_box_y() + height,
column_skip_stack, containing_block, page_is_empty,
[], [], [])
# did we render anything?
if new_box is None:
# Give up and use the total content height.
height = total_height
break
# render of the next column shall pickup where this one left
column_skip_stack = resume_at
# Stop if we already rendered the whole content
if resume_at is None:
break
# gave up or reached the total_height of all content combined?
if height >= total_height:
break
# rendered the whole content?
if column_skip_stack is None:
if step_size == 1:
break
else:
# found a working height, but our binary step is still to big.
# need to continue and check if height is lowest acceptable
upper_height = height
# we need to step backwards until our stepsize is 1.
step_size = step_size_calc((upper_height-lower_height)/2)
height -= step_size
else:
# overall height was not enough to fit the whole content =>
# height value itself is not acceptable - height+1 might be
lower_height = height+1
# if a real upper limit is not known. we do not half the stepsize
# Increase the columns heights and render them once again
if not upper_height == 0:
step_size = step_size_calc((upper_height-lower_height)/2)
height = min(height+step_size, upper_height)
# optimization: avoid last block_box_layout if we already know that our new height is acceptable
if step_size == 1 and height == upper_height:
break
else:
height = height+step_size
My question is: Why is the height information of each child - as is used to determine the total content height - not enough to fill the children into columns as they fit? Why call block_box_layout in every iteration of the height scan? Hope your pdf-backend migration is progressing well! Johannes |
Related to #719.