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);
、まったく別のエラーが発生します。com.itextpdf パッケージだけでなく、XMLWorkerHelper パッケージをインポートする必要があると思います。7-zip のようなツールを使用して jar ファイルを開くと、パスを特定できると思いました。
これは正しいですか?その場合、スクリプトが失敗するのはなぜですか?