HTML to PDF - java - batik - java

I am trying to export a html div tag(which has svg as well) to PDF using batik. I can achieve to transform just teh svg to PDF. But with div I am facing errors. Any suggestions on how to use html content to PDF using batik.
I referred to this, https://xmlgraphics.apache.org/batik/using/transcoder.html
SAMPLE HTML which I am trying to use, <div id="toexport"><svg>MY CHART</svg> <div>OTHER CONTENTS like LEGENDS</div></div>

Related

How to convert html, css to PDF using Java?

I was wondering what are some good tutorials or logic on how to convert HTML and XHTML web pages to PDF using Java?
And also suggest me How can I convert html, bootstrap css to pdf using Java?
There is a library named wkhtmltopdf (https://wkhtmltopdf.org). We used it in our project.
wkhtmltopdf command line utility must be installed on a machine.
Download page: https://wkhtmltopdf.org/downloads.html
Note it also must be installed on servers your app will execute.
Your code should fetch html and css. Css should be added to html header in style tags. I'm not aware of possibility to fetch it as a separate file to html.
Next step is to convert your html to a PDF. This code will produce byte[] containing your PDF.
String html = "<...> your html";
Pdf pdf = new Pdf();
pdf.addPageFromString(html);
pdf.addParam(new Param("--disable-smart-shrinking"));
pdf.addParam(new Param("--header-html", headerPath));
pdf.addParam(new Param("--footer-html", footer.toAbsolutePath().toString()));
return pdf.getPDF();

How to convert SVG text to SVG paths?

I have SVG file (created by com.spire.pdf) and this SVG created from pdf file (pdf file created from html using iText lib).
So i need to convert this SVG to SVG with another tags(path), or SVG to PDF.
All tags in my example is like this: <text style="fill:#000000;font-family:Arial;font-weight:bold;" font-size="10" x="36" y="46.21002" letter-spacing="-0.075">2020</text>
I'm find lib, where it's possible to convert (inkscape) where i can by this paramether --export-text-to-path made my SVG file unable to select text.
The final goal i`m need PDF file where unposible to select text from there. (like it was created from image).
There is ways to convert SVG "text" file to SVG "image" file or to pdf?
Inkscape not good for me as i want to do it in java code (Spring boot app)
For now, I’m find only one lib where it's possible to do: inkscape with --export-text-to-path param.
Inkscape work in few threads, and can be runned from java. Convertions are slow, and size of exported files depends of version of inkscape.

SVG markup in PDF as generated from Jasper Reports

Problem Statement
I have a SVG markup sent from front end javascript to back-end action classes. I am using Jasper Reports to generate PDF which will contain the SVG image( i have markup data only). How do i do that.
What i have tried
I have tried to embed SVG image( having the link to image file) to the PDF file while generating reports.
Looking for
How to embed svg markup so that i can see the image in PDF. Any other best approach to solve it.
In later versions of jasper reports you no longer need to add class="net.sf.jasperreports.engine.JRRenderable" to the imageExpression.
It is the default in JasperReports 6+ and JasperSoftStudio (JSS) will remove it if you add it in the Source pane.
The Tomcat SVG file provided in the JasperSoft Community answer works nicely. My own SVG file would show properly in MS Edge or Chrome but didn't appear in JSS.
When I added width, height, viewbox and overflow attributes to the svg element, it then did appear in JSS - so try the example first before trying the svg you actually want.
According to their own web site (here: http://community.jaspersoft.com/wiki/how-add-svg-image-your-report-jrxml) you need to include the SVG using a special HTML element:
<imageExpression class="net.sf.jasperreports.engine.JRRenderable">
<![CDATA[net.sf.jasperreports.renderers.BatikRenderer.getInstance(new java.io.File("D:\\tomcat.svg"))]]>
</imageExpression>
As the question indicates the absence of a SVG markup file, you could stick to the answer by David van Driessche but use a different getter:
BatikRenderer.getInstanceFromText($P{svgMarkup}) for example where svgMarkup is a parameter of String type containing the SVG markup data.

how to save a jsp page as pdf in java?

I have a page that built with JSP, struts.This page loading with dynamic content.
I want to save the page as PDF-file with all contents and the same format with a button click. If i can save the page with all contents, I can convert to PDF.
How to save a jsp page with this properties as pdf?
thanks in advance
I was researching this topic lately and I found that better aproach is to use javascript on client side to generate PDF.
There are few libs who can make it for you. choose your way:
f.e.
Generate pdf from HTML in div using Javascript
http://html2canvas.hertzen.com/
https://github.com/MrRio/jsPDF
(:

Batik - Convert HTML, CSS & SVG into an image

We can successfully convert an SVG into an image with Batik, however, I need to convert a whole HTML Div, with SVG implemented within, along with its CSS presentation code, into an image.
Are there any modules / support within Batik for achieving this? Here is a screenshot of
HTML, CSS & SVG which needs to be end output.
Thanks,

Categories