用于生成PDF的Flying Saucer代码适用于我的开发环境,但不适用于我的测试环境

时间:2014-06-12 02:47:22

标签: pdf-generation flying-saucer

使用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) {}         
        }
    }

0 个答案:

没有答案