Skip to content
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

Feature differences between openhtmltopdf and flyingsaucer #80

Closed
seizmo opened this issue Apr 3, 2017 · 9 comments
Closed

Feature differences between openhtmltopdf and flyingsaucer #80

seizmo opened this issue Apr 3, 2017 · 9 comments

Comments

@seizmo
Copy link

seizmo commented Apr 3, 2017

It would be greatly appreciated if you could add a section to the README that details the differences between openhtmltopdf and flyingsaucer in terms of features (apart from using libraries with better licenses).

Are you behind, on par or even exceeding the features and HTML/CSS-compatibility of flyingsaucer?

@rototor
Copy link
Contributor

rototor commented Apr 7, 2017

HTML/CSS compatibilty should be very similar. It seems flyingsaucer gets a little bit of development now again, the project was very quiet for a long time.

As you may already know: Don't expect to throw any HTML on this library and get perfect printouts from it. To get good results you must tune your HTML to this library and use some CSS extensions. Many HTML5 features like "display:flex" wont get into this library nor flyingsaucer, because they are very complex to implement and you can already "fake" them using tables. Yes, tables are bad in normal HTML. But here you want to get a fixed width PDF printout, so you need to use whats there. On the other side their are extensions like -fs-table-paginate: paginate; which allows you to get multipage tables with repeated headers. This is something which normal browser can't do. They usually put pagebreaks at random points which makes them ugly.

The features I added to openhtmltopdf are features which I needed:

See the README for other changes. Currently the differences between flyingsaucer and openhtmltopdf are not that big. Beside using the old unmaintained iText2 vs active developed OpenPDFBox.

@rajaningle
Copy link

In my opinion I can see one major difference between the two is Flying saucer with itext gives the ability to add pages to the pdf incrementally. That means it will allow you to create pdf and add one or more pages as you stream data and that seems memory efficient as well as fast.
openhtmltopdf is lacking on that front and don't support page addition which makes it render the entire thing at once which is causing performance issues.
openhtmltopdf team is doing a great job in resolving this open issue. 180
but apart from this i think both libraries are similar and really good at generating pdf from HTML/CSS I couldn't find other library which supports the same and as feature rich as these two.
@rototor Flying saucer now supports itext5.

@rototor
Copy link
Contributor

rototor commented May 21, 2018

@rajaningle iText 5 is a no go at least for me and my customers, as AGPL is more or less incompatible with anything used commercially. If your public internet facing web server is generating bills using iText 5, you would need to give all your sources to everyone getting a bill PDF. So you are required to buy a licence, and prices are not public visible (you must request a quote...)

You should be able to add pages to an existing document using this lib too. You just must specify a PDDocument of a existing PDF. Also the memory needed to generate a document should not be that much different, as you need to have the whole W3C DOM in memory for flying saucer too. The only big difference is that PDFBox holds the whole document in memory by default, but you can configure that.

The lossless image compression is currently better in iText, but I am working on that. Especially in terms of image encoding iText has many special cases to handle image data very efficient and avoid reencoding PNGs and JPEGs. At least iText 2 had that — never looked into iText 5. I am not sure if that is worth the hassle, at least I won’t implement that in PDFBox.

@rajaningle
Copy link

@rototor Thanks for insight on the licensing part and details about the other sections but I was really struggling to do incremental page add with openhtmltopdf i know it is available with pdfbox but could not find a way to do it with openhtmltopdf also it is not mentioned in docs.

If you can provide one example to add pages from html that would be really great.

Thanks.

rototor added a commit to rototor/openhtmltopdf that referenced this issue May 22, 2018
rototor added a commit to rototor/openhtmltopdf that referenced this issue May 22, 2018
@rototor
Copy link
Contributor

rototor commented May 22, 2018

@rajaningle For an example look into #222 ConcateOutputTest.testConcateOutput()

danfickle added a commit that referenced this issue May 23, 2018
rototor added a commit to rototor/openhtmltopdf that referenced this issue Jun 29, 2018
rototor added a commit to rototor/openhtmltopdf that referenced this issue Jun 29, 2018
@taras19921
Copy link

taras19921 commented Jul 30, 2018

Hi all! My svg image is not displayed on PDF file. I have svg image on my html template. This is a snippet of my code:

PdfRendererBuilder builder = new PdfRendererBuilder(); builder.defaultTextDirection(BaseRendererBuilder.TextDirection.LTR); builder.useSVGDrawer(new BatikSVGDrawer()); builder.useMathMLDrawer(new MathMLDrawer()); builder.addDOMMutator(LaTeXDOMMutator.INSTANCE); builder.useDefaultPageSize(210, 297, BaseRendererBuilder.PageSizeUnits.MM); builder.withHtmlContent(html, ""); builder.toStream(os); builder.run();

What I'm doing wrong or what I'm missing?

@rototor
Copy link
Contributor

rototor commented Jul 30, 2018

@taras19921 You should open a new issue for this, as it is not related to this issue.

Your builder looks fine, there may be something wrong the HTML you supply. Please open a new issue and provide the HTML. Thanks.

@taras19921
Copy link

I've opened a new issue: #258

@danfickle
Copy link
Owner

Finally added a list of differences with Flying Saucer in the README. Will add to it over time. Thanks everyone.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants