使用SSJS我已經使用iText附帶的簡單HTML解析器成功創建了一個PDF,但簡單的HTML解析器並不尊重CSS,而且非常有限。我從iText網站下載了XMLWorker類,並嘗試使用它,但是我瞭解如何調用Java包的知識太有限了。我可以找到的所有示例都使用Java並直接引用類,例如。Xpages使用XMLWorker類創建PDF
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包。我想如果我使用7-zip這樣的工具打開jar文件,我可以找出路徑,這是我如何到達com.itextpdf.tool.xml.XMLWorkerHelper
這是正確的嗎?如果是這樣,爲什麼我的腳本失敗?
你得到什麼腳本錯誤? –
你必須導入一個包,而不是一個類:* importPackage(com.itextpdf.tool.xml)* –
謝謝Sven - 我不知道。儘管我一直在使用Notes多年,但我對Java完全陌生。我對客戶端JavaScript有很好的瞭解,並且發現很容易獲得服務器端的JavaScript,但Java仍然是一個謎。 –