У меня есть многоформатный просмотрщик документов, в котором для отображения PDF-файлов я использую компонент p:documentViewer
PF Extension. Базовый компонент, предоставляющий StreamedContent для PDF, визуализируется по фазе и работает как положено. Однако, хотя сам PDF отображается нормально, зритель не отображает цифровые подписи в нем . Нужно ли добавлять дополнительные настройки к p:documentViewer
при его использовании? Вот мое использование:
<pe:documentViewer id="pdfVw" height="600" width="800" value="#{viewerController4.pdfDocumentStream}">
<f:param name="id" value="#{viewerController4.currentDocId}" />
</pe:documentViewer>
Метод вспомогательного компонента, обслуживающий содержимое PDF:
public StreamedContent getPdfDocumentStream() throws IOException {
FacesContext context = FacesContext.getCurrentInstance();
if (context.getCurrentPhaseId() == PhaseId.RENDER_RESPONSE) {
return new DefaultStreamedContent();
} else {
String id = context.getExternalContext().getRequestParameterMap().get("id");
Doc doc = pdfDocMap.get(id);
return new DefaultStreamedContent(new FileInputStream(new File(doc.getDocPath())), "application/pdf", doc.getDocName());
}
}
Кстати, у меня также есть функция в пользовательском интерфейсе для отображения миниатюр документов, в которых для PDF-файлов я извлекаю первую страницу с помощью PDFBox и преобразую ее в изображение PNG и отображаю в p:graphicImage
. Я вижу, что на этом изображении цифровая подпись отображается нормально!
Я на SpringBoot + PF 6.2 + JoinFaces