【发布时间】:2013-05-15 11:46:17
【问题描述】:
使用 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 的方式
这是对的吗?如果是这样,为什么我的脚本会失败?
【问题讨论】:
-
你遇到了什么脚本错误?
-
你必须导入一个包,而不是一个类:importPackage(com.itextpdf.tool.xml)
-
谢谢斯文 - 我不知道。尽管我已经使用 Notes 多年,但我对 Java 完全陌生。我对客户端 JavaScript 有很好的了解,并且发现学习服务器端 JavaScript 很容易,但 Java 仍然是个谜。