С помощью SSJS я успешно создал PDF-файл с использованием простого анализатора HTML, который поставляется с iText, но простой парсер HTML не уважает CSS и очень ограничен. Я загрузил класс XMLWorker с сайта iText и попытался использовать его, но мои знания о том, как вызывать пакеты Java, слишком ограничены. Все примеры, которые я могу найти, используют Java и относятся к классам напрямую, например.Xpages Создание PDF с использованием класса XMLWorker
Document newPDF = new Document();
Но в SSJS мы должны использовать точечную нотацию, например.
var newPDF:com.itextpdf.text.Document = new com.itextpdf.text.Document();
Это - я думаю - где я спотыкаюсь. Мой код выглядит следующим образом:
function createLPO2(pReqDoc:NotesDocument) {
importPackage(com.itextpdf);
//importPackage(com.itextpdf.tool.xml.XMLWorkerHelper);
importPackage(java.io);
var con = facesContext.getExternalContext();
var response:com.ibm.xsp.webapp.XspHttpServletResponse = con.getResponse();
response.setContentType("application/pdf");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", -1);
response.setHeader("Content-Disposition","attachment; filename=\"LPO_" + pReqDoc.getItemValueString("RequisitionNo") + ".pdf\"");
var newPDF:com.itextpdf.text.Document = new com.itextpdf.text.Document();
var writer = com.itextpdf.text.pdf.PdfWriter.getInstance(newPDF,response.getOutputStream());
var xmlWorkerHelper = com.itextpdf.tool.xml.XMLWorkerHelper.getInstance();
var strHTML = getTestHTML(); //this is the HTML used in the examples on the iText site
xmlWorkerHelper.parseXHtml(writer, newPDF, new java.io.StringReader(strHTML));
newPDF.close();
writer.close();
facesContext.responseComplete();
}
Если я запускаю этот сценарий, как это я получаю ошибку сценария на консоли Domino. Если я удалю комментарий по строке importPackage(com.itextpdf.tool.xml.XMLWorkerHelper);
, это даст совершенно другую ошибку. Я подозреваю, что мне нужно импортировать пакет XMLWorkerHelper, а не только пакет com.itextpdf. Я подумал, что если бы я открыл файл jar с помощью инструмента, такого как 7-zip, я мог бы проработать путь, каким образом я пришел в com.itextpdf.tool.xml.XMLWorkerHelper
Это правильно? Если да, то почему мой скрипт терпит неудачу?
Какая ошибка скрипта вы получаете? –
Вам нужно импортировать пакет, а не класс: * importPackage (com.itextpdf.tool.xml) * –
Спасибо Свену - я этого не знал. Я совершенно новичок в Java, хотя я много лет работаю с Notes. Я хорошо разбираюсь в javascript на стороне клиента и нашел, что легко подобрать серверный javascript, но Java по-прежнему остается загадкой. –