You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
After implementing the above our memory usage was lowered from ~2.5gb to about 600mb. Great, but it introduced an issue for us.
The formatting still works, we don't end up with random page breaks. This issue is that it breaks the ability to use the headers option, because after the first chunk of data the first line is no longer the actual header.
This PR implements a headers option which can be used like the below
header_data=[table_data.first]table_data.each_slice(500).with_indexdo |batch,i|
doc.table(batch,header: true,headers: header_data,width: doc.bounds.width)do# same styling as before# you can also independently style the header cells themselvesheaders.size=8headers.borders=[]headers.padding=[0,5,5,0]# and the individual columns of the headerheaders.column(0).width=doc.bounds.width * 0.08# and the rowsheaders.row(0).font_style=:boldendend
I'd like to get thoughts on this. I'm not sure if there is anything I'm missing here. I did try to generate the manual in this branch, but ran into some errors when doing so.
How does headers interact with header? You mention that header should be set to true. In the code I can see that this means there is one header row. Shouldn't header be set to the number of rows in headers if the latter is used? I.e. that headers also automatically sets (and overrides) header?
How does headers interact with header? You mention that header should be set to true. In the code I can see that this means there is one header row. Shouldn't header be set to the number of rows in headers if the latter is used? I.e. that headers also automatically sets (and overrides) header?
Yes, that's a good point and may be something that needs further documentation. I tried not to change the functionality of the header option directly, only adding the headers option will replace the headers on pages after the first. I tried to make that clear in my example, that the header should be included in both the main table data as the first row and specified in the headers option.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
An issue we have run into recently when building a PDF from a large set of data is memory usage.
We can alleviate this issue by creating tables in smaller chunks of the data with something like the below
After implementing the above our memory usage was lowered from ~2.5gb to about 600mb. Great, but it introduced an issue for us.
The formatting still works, we don't end up with random page breaks. This issue is that it breaks the ability to use the headers option, because after the first chunk of data the first line is no longer the actual header.
This PR implements a
headersoption which can be used like the belowI'd like to get thoughts on this. I'm not sure if there is anything I'm missing here. I did try to generate the manual in this branch, but ran into some errors when doing so.