HTML a PDF usando iText CSS externo

Estoy usando Flying Saucer para renderizar algunos documentos PDF de cadenas a HTML.

DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputStream is = new ByteArrayInputStream(html.getBytes("UTF-8"));
Document doc = builder.parse(is);

response.setContentType("application/pdf; charset=UTF-8");
response.setHeader("Content-disposition", "inline; filename=\"" + outFileName + "\"");

OutputStream os = response.getOutputStream();

ITextRenderer iTextRenderer = new ITextRenderer();
iTextRenderer.setDocument(doc,null);
iTextRenderer.layout();
iTextRenderer.createPDF(os);
os.flush();
os.close();

Esto funciona bien cuando tengo texto sin formato. He hecho referencia a un CSS externo en mi contenido HTML. Pero, cuando se genera PDF, CSS no se aplica.

He leído que el setDocument()método toma dos parámetros: documento y url. El parámetro url indica la url base utilizada para anteponer rutas relativas que aparecen en el xhtml, como un CSS externo

Entonces, he tratado de suministrar

ruta de contexto / css

direcotry en la baseURL y lo usó en el setDocument(). Todavía no hay resultado

Entonces, mi pregunta ¿Cuál es la URL correcta para pasar como baseURL?

String baseURL = ""; // What goes here as root URL for resources
iTextRenderer.setDocument(doc,baseURL);
Respuesta 1

Las preguntas frecuentes dicen esto:

La url es la "base", que para una URL normal sería la ubicación principal: el directorio principal o la ubicación donde se encuentra el documento que está representando. Si su documento tiene URI absolutos para CSS e imágenes, o no tiene referencias externas en absoluto, entonces la URL base puede ser nula. Si su documento tiene algún URI relativo para CSS o imágenes, entonces la URL base no debe ser nula, sino que debe apuntar al directorio o dirección donde se encuentra el documento actual.

¿Probó la ruta a su documento en lugar de la ruta a su CSS? Sin embargo, tuve algunos problemas para vincular CSS también, así que inserté el URI (sin problemas hasta ahora :-)). Si usa un enlace como lo publiqué anteriormente, ¿funciona?

Lo siento por la nueva publicación, pero los comentarios me dijeron que solo me quedan char negativos ...

Respuesta: 2

Puede insertar las rutas de CSS poniéndolas
<link rel="stylesheet" type="text/css" target='_blank' href="file://path/to/your.css" />
en su documento (encabezado).

(En algunos casos, puede usar una ruta simple en lugar de un URI)

Respuesta: 3

Usé este checkboxtree: it.cnr.imaa.essi.lablib.gui.checkboxtree, y esta es la introducción: http://www.javaworld.com/javaworld/jw-09-2007/jw-09-checkboxtree.html ? página = 1. Pero cuando agrego treenode, ...

Mi requisito es que quiero obtener el número de semana del año al pasar la fecha. Regla: el primer mes del año debe ser febrero. La semana debe comenzar de sábado a viernes. Por ejemplo: 01/02/2019 - debería ...

Preguntándome si esto es posible, tengo un applet de Java que estoy incorporando en mi propia versión de las páginas de inicio de sesión del sitio web (usando WordPress actualmente) y usando un applet de Java para permitir el inicio de sesión con un ...

Me gustaría limpiar la máquina Ubuntu en la que estoy trabajando. En particular, me gustaría verificar cada espacio de trabajo de Eclipse de proyectos Java que eventualmente se abandonen en la máquina. Desde la máquina ...