Java IText组件可视化

Java IText组件可视化,java,itext,Java,Itext,我声明我使用NetBeans 8.2。我需要在IText的一段上传输一个jframe(表示发票)。所有的东西都能工作并显示出来。然而,我发现我创建的pdf的文字和细节没有得到很好的定义和显示 例如,字符串似乎具有着色效果,因此它们不是只有黑色,而是灰色。当我打印时,它特别烦人:较小的文本不可读。视频显示中不会出现相同的效果 我尝试修改jframe大小并缩放graphic2d实例。然后我恢复到正常大小,修改了段落的比例,所以我得到了一个“更好但不令人满意”的结果 有什么建议吗 编辑:这是管理段落创

我声明我使用NetBeans 8.2。我需要在IText的一段上传输一个jframe(表示发票)。所有的东西都能工作并显示出来。然而,我发现我创建的pdf的文字和细节没有得到很好的定义和显示

例如,字符串似乎具有着色效果,因此它们不是只有黑色,而是灰色。当我打印时,它特别烦人:较小的文本不可读。视频显示中不会出现相同的效果

我尝试修改jframe大小并缩放graphic2d实例。然后我恢复到正常大小,修改了段落的比例,所以我得到了一个“更好但不令人满意”的结果

有什么建议吗

编辑:这是管理段落创建的方法的代码:

private Paragraph creaParPdf(float scaleFactorW, float scaleFactorH) throws BadElementException, IOException {
    BufferedImage img = new BufferedImage(fatt.getWidth(), fatt.getHeight(), 
        BufferedImage.TYPE_INT_ARGB);
    Graphics2D img2D = img.createGraphics();
    img2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);
    fatt.paint(img2D); 
    Paragraph p = new Paragraph(); 
    com.itextpdf.text.Image itextImg = 
        com.itextpdf.text.Image.getInstance(img, Color.white, false);
    itextImg.scaleAbsolute(PageSize.A4.getWidth()*scaleFactorW, PageSize.A4.getHeight()*scaleFactorH);
    p.add(itextImg);
    return p;
}
这是管理pdf创建的方法的代码:

public void printPDF() throws FileNotFoundException, DocumentException, SQLException, ClassNotFoundException, IOException{
    fatt = this;
    Document d = new Document(PageSize.A4,10,10,10,10);
    d.setMargins(10, 10, 0, 10);
    String salvPath = "C:\\"+cliente+".pdf";
    filePDF = new File(salvPath);
    filePDF.getParentFile().mkdirs();
            if (filePDF.exists())
                out.println("Il file " + salvPath + " esiste");
            else try {
                if (filePDF.createNewFile())
                    out.println("Il file " + salvPath + " è stato creato");
                else
                    out.println("Il file " + salvPath + " non può essere creato");
            } catch (IOException ex) {
                getLogger(JFrameStart.class.getName()).log(SEVERE, null, ex);
            }
    FileOutputStream fs = new FileOutputStream (salvPath);
    PdfWriter writer = PdfWriter.getInstance(d, fs);
    writer.setFullCompression();
    d.open ();
    try {            
        float scaleFactorW = 0.98f;
        float scaleFactorH = 0.98f;
        float offset = 0.0f;
        p = creaParPdf(scaleFactorW,scaleFactorH);
    } catch (BadElementException ex) {
        Logger.getLogger(JFrameTracc.class.getName()).log(Level.SEVERE, null, ex);
    }
    d.add(p); 
    d.close();     
}
这是最终结果,通过打印pdf,您可以看到较小的部分实际上难以辨认:


这听起来像是一个有趣的难题!您是否能够提供少量的代码供读者重现您的问题?是的,请使用您感兴趣的方法进行编辑为什么不使用itext direct
Graphics2D
支持?将文本呈现为位图,然后将位图嵌入到pdf中,结果总是比将文本直接呈现到pdf中的质量差。您能给我一个如何实现的示例吗?我用itext和各种单元格和表格重新创建了整个账单。。。结果是我想要的,即使施工很麻烦。所以我解决了这个问题,我建议你直接使用它,如果你想得到pdf格式的表单,结果会更好。。