0

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 ファイルを開くと、パスを特定できると思いました。

これは正しいですか?その場合、スクリプトが失敗するのはなぜですか?

4

1 に答える 1

1

ロブ、真剣に、SSJS でそれをやろうとしないでください。iText はすべて Java です。別の言語で iText を操作しようとすると、ストレスがたまるでしょう。OutputStream と必要なデータ (Document、View など) を受け取るメソッドを持つラッパー クラスを作成します。SSJS で OutputStream を取得し、関数を呼び出します。OpenNTF の XAgent XSnippet と、PDF 作成に関する私のブログ シリーズ (最後の 2 つが欠落しています。ご容赦ください) を探してください。注意点として、iText は GPL であるため、ソフトウェアも GPL にするか、商用の iText ライセンスを購入するか、Apache PDFBox や Apache FOP などの代替手段を探す必要があります。ああ、2 番目の注意: HTML から PDF への変換はピタです。たとえばSwingソフトウェアのような商用ツールを見ることができます(またはアプローチを変更します)

于 2013-05-21T00:50:52.220 に答える