使用 SSJS 我已经使用 iText 附带的简单 HTML 解析器成功创建了一个 PDF,但是简单的 HTML 解析器不尊重 CSS,并且非常有限。我从 iText 站点下载了 XMLWorker 类,并尝试改用它,但我对如何调用 Java 包的了解太有限了。我能找到的所有示例都使用 Java 并直接引用这些类,例如。
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 的方式
这是正确的吗?如果是这样,为什么我的脚本会失败?