How to generate an ICO file from an SVG using maven? - maven-2

In my project I need an icon file (.ICO) for the Windows executable. I'd like to generate that file from an SVG, so it contains several images for different sizes. Is there a maven plugin that can do that for me?
I know I can just put an icon file in my repository, but the source file is an SVG image, so I'd like to avoid that.

I don't think there is some Maven plugin for that. And also the problem goes a bit beyond maven itself.
What you can do is:
Transform SVG to PNG using Apache Batik Rasterizer
Transform PNG to ICO using ImageMagick and JMagick wrapper
Create Apache Ant script that will call 1 and 2, and add it to one of the maven lifesycle phases using AntRun plugin.

I came across your question looking for a solution to a very similar problem. None of the answers given really suited me as I didn't want to get tied into running executables, so I wrote a pure Java Ant task (using Batik and image4j under the covers)
I've open sourced it at http://svg2ico.sourceforge.net/ - maybe you could call it from Maven?

You can rasterize an SVG to a PNG on a web page by using Google's canvg to push it into a Canvas, and then using toDataURL() on the canvas to get base64-encoded PNG data. You'd then need to decode that.
Or, you could use any number of server-side SVG-to-PNG converters.
Not a better answer than #Andrey's, but showing more options for the first step.

The batik-maven-plugin will at least let you generate a PNG from SVG. Not sure how to generate the ICO, though.

Related

Is it possible to use .svg files with React Native without converting them?

I have found many answers about converting .svg files to rasterized formats, however I would prefer to keep it as a single svg file. I got excited when I found react-native-svg, but was then disappointed when I saw their image example used a .jpg file.
Is keeping my image as a vector possible? Am I trying to do something unwise?
Thank you for your help.
You need to convert your SVG's to use the react-native-svg library, this is a useful tool to do so: https://react-svgr.com/playground/
This does not rasterise the image, it will remain as a vector just in a format that the library can parse.

Show pdf in JavaFX application

I read the following posts: JavaFX: Display PDF in WebView, Displaying pdf in JavaFX
But there occur some problems for me:
The links of JPedalFX do not work any more and I can't find example codes on the web.
I don't want to use Swing-components in an JavaFX-application.
The solution with PDF JS doesn't work either, because Maven is used in the project and I don't want to put the library in the resources folder.
JxBrowser would be a possible solution but cost too much.
Any ideas?

Is it possible to convert fabricjs svg output to pdf without rasterizing?

We are building a web app where the user can make a design by using fabric.js and at the end he should receive a pdf file with his work.
At first, we tried to use JSPDF because it was prefered to have a cliente-side solution. However by doing pdf.addImage(canvas.toDataURL(),...) we are rasterizing the design.
In second place, we tried server side solution using WKHTMLTOPDF, sending canvas.toSVG(), but there are some issues with fonts and shapes rendering.
The designs are complex as they can have text, shapes, images and svg.
We also tried INKSCAPE (inkscape --without-gui --export-pdf ...), MPDF and MUPDF without good results. IMAGEMAGICK is not a solution has it also rasterize the design.
The main goal is to get a vector pdf, where it's possible to increase size and where the elements of the design are selectable, and if possible that pdf should be ready to print (300 dpi and cmyk)
Yes its possible using TCPDF library.
Please check this ImageSVG api for more information for converting SVG to PDF.
https://tcpdf.org/examples/example_058/
Export the canvas to svg and use pdflib to make the pdf.
You can find an exemple here:https://www.pdflib.com/pdflib-cookbook/graphics/starter-svg/

Sphinx documentation: Include svg images in PDFs via latex

I'm doing an internship for an IT company which needs a document application for its firmware docs (md files).
The request was to maintain these md files and to convert them to rst format (I used pandoc). So now I have a configured Sphinx application with only rst files. The problem now is that some rst have links to SVG images, and I have to use the latex builder of Sphinx to convert them to PDFs.
I've searched around and I found this solution from 2 years ago, which was essentially what I was looking for: https://sites.google.com/site/nickfolse/home/sphinx-latexpdf-output-with-svg-images. I tried to implement it but I'm not an expert with GNU makefiles and I don't know if the current version of Sphinx allows it or if it is out there an easy workaround, so the thing didn't succeed.
Does someone have a viable solution for this?
At this time, SVG is still not supported. I work around it in Pyramid docs by exporting the original file (OmniGraffle) to both SVG and PNG.
In docs/narr/router.rst:
.. image:: ../_static/pyramid_request_processing.*
And we place images in docs/_static.
The HTML uses SVG and the PDF uses PNG.
There is available the Sphinx SVG to PDF converter extension to automatically convert from SVG to PDF.

Jekyll documentation to PDF with TOC

I would like to write documentation using Jekyll with HTML and PDF outputs. Html can have a navigation but the PDF should have table of contents. Is there a free and easy way to do that?
The HTML part is easy but I would like to use #media print CSS for making the PDF file.
I have a few ideas how to do this.
Use PrinceXML, unfortunately this is commercial product with a nasty price tag ~$500
Use WKHTMLTOPDF
Use Maruku, since it is possible to do a PDF conversion using it
I would like to have multiple pages HTML and single page PDF with a TOC. Any suggestions?
Btw. Buildr has solved this problem using PrinceXML.
If 'free' is your most important criterion, than wkhtmltopdf is your best bet. It supports things like covers, toc, headers, footers and sections. Depending on how exotic the layout of your document will be, you most likely will run into some page-break issues, but with a bit of tinkering you should be fine.
I've been using wkhtmltopdf for a bit now, with some quite complicated documents (with javascript charts, tables, svg images, etc.) and have not run into too many issues.
Make sure you use the static version of wkhtmltopdf, as it is the only version which supports rendering of a TOC page.
You can use the PDFKit gem, which uses wkhtmltopdf behind the scenes. Then you can put your PDF logic in a Jekyll plugin as a generator or converter.
For generating a table of contents using Jekyll, you can use the {:toc} macro offered by markdown, or write your own textile table of contents filter if you prefer to use textile..
For generating a PDF from Html and CSS, I have found weasyprint to be a good solution. Since they do not rely upon an external engine for rendering, they do not depend upon foreign project's roadmaps for implementing relevant features such as CSS generated content or #page CSS-declarations. (But in contrast to wkhtmltopdf, weasyprint does not parse javascript).
You could also use a browser extension called Awesome Screenshot to create JPEG/PDF from a page. The extension allows you to create a full-page image or export it to PDF. With this tool, you can export all pages really quickly (and/or later combine all PDFs together to create a single document).
I am aware this is a quick & dirty solution (not perfect). E.g: while using images instead of text, the full-text search will not work. Additionally, it may require some manual work, but it does the job when you just want to read it.