Я использую летающую тарелку для рендеринга некоторых PDF-документов из строк в 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();
Это отлично работает, когда у меня есть простой текст. Я ссылался на внешний CSS в своем HTML-содержимом. Но когда создается PDF-файл, CSS не применяется.
Я читал, что метод setDocument()
принимает два параметра: документ и URL. Параметр url указывает базовый URL-адрес, используемый для добавления к относительным путям, которые появляются в xhtml, например к внешнему CSS.
Итак, я попытался поставить
контекстный путь / css
direcotry в baseURL и использовал его в setDocument()
. Все еще нет результата
Итак, мой вопрос. Какой правильный URL передать как baseURL?
String baseURL = ""; // What goes here as root URL for resources
iTextRenderer.setDocument(doc,baseURL);