This software can be used to convert email files (eml or msg) to pdf files. It can be used as a library, command line tool or desktop application with its GUI.
The conversion is done by parsing (and cleaning) the mime/structure, converting it to html and then using wkhtmltopdf to convert the generated html to a pdf file.
It also handles inline images, corrupt mime headers and can use a proxy.
You need :
- a complete jre, not a headless one (on Debian, for example, you need to have
openjdk-11-jre
installed); - wkhtmltopdfneeds to be in your $PATH
You can download the lates binaries here.
There you can find a Windows setup.exe and a jar.
If you want to use the jar (e.g. for a non Windows OS) you need the wkhtmltopdf binary in the PATH.
Usage: EmailToPDFConverter [options] <email-file>
Options:
-d, --debug
Debug mode
Default: false
-e, --error
Display only Error messages.
Default: false
-a, --extract-attachments
Extract Attachments.
Default: false
-ad, --extract-attachments-directory
Extract Attachments to this Directory, if this option is not present the
directory is besides the pdf as "<pdf-name>-attachments".
-?, --help
Print this help.
-hh, --hide-headers
Do not add email headers (subject, from, etc.) at the beginning of the
PDF document.
Default: false
-o, --output-filepath
Filepath of the produced PDF document. If this option is ommited the PDF
will be placed alongside the email File.
-s, --page-size
Set wkhtmltopdf paper size to: A4, Letter, etc. (default A4)
Default: A4
-r, --dpi
Set wkhtmltopdf DPI. (default 300)
Default: 300
-p, --proxy
Proxy (e.g. "http://10.64.1.74:81"). If "auto" is supplied the default
system proxy will be used.
-q, --quiet
Do not display any messages at all.
Default: false
-gui, --show-graphical-user-interface
Show graphical user interface (other parameters are ignored when using
this switch).
Default: false
-v, --version
Print the version number.
Default: false
E.g. java -jar emailconverter-2.1.1-all.jar example.eml
(you need wkhtmltopdf binary in the PATH)
You need to git clone this repository. The build will fail if you remove the .git folder (e.g. download this as zip from github).
-
gradlew shadowJar
Creates a single self contained Jar inbuild/libs
-
gradlew dist
Same asgradlew shadowJar
but additionally creates windows exe launchers inbuild/libs
for gui and console mode. This task needs the Launch4j binary in the PATH. -
gradlew innosetup
Creates a windows setup inbuild/innosetup
. This task needs the Launch4j binary as well as the Inno Setup issc.exe in the PATH. -
gradlew check
Executes the unit tests and generates various reports (jacoco, checkstyle, findbugs, jdepend, unit test report).
Dates are formatted with the default locale. You can change it, e.g. by passing the VM argument -Duser.language=en-US
similar to setting the timezone e.g. -Duser.timezone="Asia/Kolkata"
.
The code is available under the terms of the Apache V2 License.