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