使用Flying Saucer创建PDF的应用程序在我的本地域中运行但我没有成功使用相同的代码在另一个域(UNIX的测试环境)中生成PDF。我在另一个UNIX环境中测试它工作。因此,它确认UNIX不是问题。通过使用System.out
写入控制台,我发现流程停在以下行:
ITextRenderer renderer = new ITextRenderer();
请帮忙。调试它变得如此困难,因为它无法在我的本地环境中复制。
以下是我正在使用的代码:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import org.w3c.dom.Document;
import org.w3c.tidy.Tidy;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.DocumentException;
public static String getPDF()throws FileNotFoundException, DocumentException, UnsupportedEncodingException{
StringBuffer htmlContent = new StringBuffer();
htmlContent.append("<html><head>");
htmlContent.append("</head><body>");
htmlContent.append("<p>Hello World</p>");
htmlContent.append("</body></html>");
s_logger.debug("The generated htmlContent $$$$$$$$ !!" + htmlContent.toString());
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream is = new ByteArrayInputStream(htmlContent.toString().getBytes("ISO-8859-1"));
Tidy tidy = new Tidy();
Document document = tidy.parseDOM(is, null);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(document, null);
renderer.layout();
try{
renderer.createPDF(baos);
renderer.finishPDF();
}catch(Exception ex){
s_logger.debug("Exception while creating PDF: "+ ex.getMessage());
ex.printStackTrace();
}
/*baos.close();
baos = null;*/
finally{
try {
if(baos != null) {
baos.flush();
baos.close();
}
} catch(Exception e) {}
}
}