From https://www.docx4java.org/forums/pdf-output-f27/higher-fidelity-pdf-output-now-available-t2117.html
In docx4j 3.3.0 and later, this is the default way of creating a PDF.
The default configuration is to use
https://converter-eval.plutext.com:443 for conversion. See the link
below for how to change that to your local install.
A side benefit is that this new approach is much faster than the FO
approach.
We're offering this as a commercial component, so we can continue to
invest in it. The existing FO approach will of course remain free and
open source. (To use that instead, just add the export-FO jar and its
dependencies to your classpath. See further
https://github.com/plutext/docx4j-export-fo )
You can install your own copy (and really should please if you want to use it; the default instance is solely so you can easily check the fidelity and we are likely to rate limit the eval instance in the near future).
To use your own instance, see https://converter-eval.plutext.com/client_java.html which says:
To use your own instance, tell docx4j where it is.
You can do that via docx4j property "com.plutext.converter.URL".
You should set that in docx4j.properties; a sample properties file can
be found on GitHub
Add docx4j.properties to your classpath, if you didn't have it
already.
Or alternatively, you could set the property programmatically:
Docx4jProperties.setProperty(
"com.plutext.converter.URL",
"https://converter-eval.plutext.com:443/v1/00000000-0000-0000-0000-000000000000/convert");
Your instance will show an eval watermark until you apply a license key (which you'll need to pay for to get). As per above, if you want free docx to PDF, you could try the export-FO approach.