-
-
Notifications
You must be signed in to change notification settings - Fork 683
feat: Table cell spans #1736
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
base: master
Are you sure you want to change the base?
feat: Table cell spans #1736
Conversation
b23d917
to
a893e72
Compare
|
Can you add a test? |
Sure, I just have limited resources and vacation soon, so if someone wants to finish up, I don't mind. |
a893e72
to
dc20c86
Compare
I added a test, but it does not precisely check e.g. the different box properties. |
I have a small problem: the tests now complain, that there's a difference (which is indeed in the renders). I suspect the test renderer interprets this as small gap and therefore outputs the mean as grey? Should we ignore this or solve it another way? |
Yes, that's possible. Seems to be at the intersection of each cell. |
To allow col spans the border must be calculated for each cell and not for the whole width / height of the table any more. So there now exist infinite small fake gaps, which in theory should not be visible, and also aren't in my inspection in the pdf readers, just the pdftocairo does this I think... |
That's fine then. |
I now wonder, if it would make sense to introduce a new widget, like See also: |
3b296a0
to
ace3ac8
Compare
Row span is now also supported via I updated the goldens and saved the diffs here: |
I now used an improved algorithm for rowspanning. There's a special case where the remaining space it not quite optimized, when multiple cells with rowpans overlap and in one row and no cell (without rowspan) with height is given to that row. |
Hello @Gustl22, I tried your changes, I think this is a bug. Codepw.Widget buildSpanCell({
final int columnSpan = 1,
final int rowSpan = 1,
final PdfColor? color,
final double? height,
}) {
return pw.TableCell(
child: pw.Container(
color: color,
height: height,
child: pw.Text('colSpan: $columnSpan, rowSpan: $rowSpan, height: $height'),
),
columnSpan: columnSpan,
rowSpan: rowSpan,
);
}
pdf.addPage(pw.Page(
build: (final pw.Context context) => pw.Table(
children: [
pw.TableRow(
children: [
buildSpanCell(rowSpan: 2, color: PdfColors.red),
buildSpanCell(rowSpan: 2, color: PdfColors.blue),
buildSpanCell(color: PdfColors.green),
],
),
pw.TableRow(
children: [
buildSpanCell(color: PdfColors.green),
],
),
],
border: pw.TableBorder.all(),
),
)); ResultExpectationThe first and second column should have their rows spanned ActualThe first and third column have their rows spanned instead of the second column (notice the border in the second column) |
Hi @Gustl22 , I'm hitting the same bug as @sabin26 . From my tests I could see that when we have two consecutive rowspanned cells, it bugs. Here are some images: 1 - Perfect table with first row colspanned (4): 2 - Perfect table with first row colspanned (4) and second row colspanned(2) in two columns: 3 - Perfect table now with three different rowspans. As they are not consecutive, the table is fine (cells 2 & 2a merged, cells 3a & 3b merged and cells 4b and 4c merged) 4 - Now comes the problem. When trying to merge cells 2 & 2a and also 3 & 3a, the bug happens. It merges correctly the 2 & 2A, but when merging the 3 & 3a, the 4a cell gets pulled into the 3a position (that should be rowspanned inside the 3 cell) |
# Conflicts: # pdf/CHANGELOG.md # pdf/lib/src/widgets/table.dart
This comment has been minimized.
This comment has been minimized.
@sabin26 @fchamone I fixed the issue. @DavBfr can you have a look? If the performance decrease is to high, we can think about switching the calculation mode, if no More: are you still interested in this feature? |
Any update on this please ? it will be very usefull to have this feature |
You can always checkout this branch as git dependency, I'll try to keep it up to date. And also an thumbs up in the PR description may would help to get this in. |
can you explain how i can achieve this in flutter, i'm new idk all the stuff ? Edited : dependency_overrides:
pdf:
git:
url: https://github.com/Gustl22/dart_pdf.git
path: pdf/
ref: 313-column-span |
@DavBfr Hello, |
Add's the col and rowspan feature for tables.
Closes #989, #983, #896, #645, #313, #256, #167