Я использую flyingsaucer для рендеринга документа xhtml в pdf через сервлет, который возвращает сгенерированный документ PDF. Документ xhtml имеет изображение, которое запрашивается у другого сервлета. Сервлет образа проверяет, кто вошел в систему, прежде чем возвращать соответствующее изображение. В приведенном ниже коде показано, как запрашивается изображение:
<img height="140" width="140" src="http://localhost:8080/myapp/servlet/DisplayPic" />
Моя проблема заключается в том, что http-запрос для изображения относится к рендерингу PDF, а не к зарегистрированному пользователю, поэтому сервлет изображения не знает, кто вошел в систему, и поэтому желаемое изображение не возвращается.
В настоящее время я использую следующий код для рендеринга документа xhtml:
ITextRenderer renderer = new ITextRenderer();
renderer.setDocumentFromString(xhtmlDocumentAsString);
renderer.layout();
os = response.getOutputStream();
renderer.createPDF(os);
Мне нужно либо поддерживать сеанс пользователя, когда запрашивается сервлет изображения, либо предоставить рендереру изображение, используемое для этого конкретного элемента xhtml. Я думаю, что последнее можно сделать с помощью ReplacedElementFactory
, но я не смог выкопать код примера, который может мне помочь.