react-pdf icon indicating copy to clipboard operation
react-pdf copied to clipboard

Create table layout

Open mocanew opened this issue 2 years ago • 1 comments

Is your feature request related to a problem? Please describe. I'm the author of @ag-media/react-pdf-table, and after much time wrestling with the layout system, I've concluded that there's no way to implement a proper table layout with the current primitives.

Describe the solution you'd like The solution is not fully thought through, but I think the most essential parts are:

  • border size/style/color inheritance needs to be fixed (it doesn't seem to be working at all currently)
  • implement collapsible borders
  • add a prop to the View component instructing it to move the whole component and all its children onto the next page if it doesn't fit on the current one

One alternative might be to add table primitives and have them be special cases in the layout package.

Describe alternatives you've considered As of now, @ag-media/react-pdf-table is usable for a table that is contained to one page (we use it in production already), but if you want to wrap a table to multiple pages, it gets weird with no way of fixing it.

mocanew avatar Jun 20 '23 21:06 mocanew

Since react-pdf is based on PDFKit, could @ag-media/react-pdf-table somehow access the PDFKit instance directly and create the shapes using the primitive functions it's exposing? https://github.com/natancabral/pdfkit-table could then provide some inspiration.

We (@opencollective) would love to migrate to react-pdf, but we need good support for multi-page tables. We would happily use https://github.com/ag-media/react-pdf-table for that, but I agree that native support for tables in this library would be fantastic.

Betree avatar Feb 20 '24 13:02 Betree

@Betree, thanks for the linked repo; it might be the solution we're searching for if we can somehow reconcile react-pdf's layout with the table implementation. I'll take a more in-depth look in a couple of days.

mocanew avatar Feb 27 '24 08:02 mocanew