我正在生成一个文档,如下面的代码所示,当然表的内容除外,它是变化的。我需要做的是确保这个表格的大小永远不会超过一页,而不管单元格中的内容数量如何。有办法做到吗?
import com.itextpdf.text.Phrase; import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.PageSize; import com.itextpdf.text.pdf.PdfPCell; import com.itextpdf.text.pdf.PdfPTable; import java.awt.Desktop; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;public void createTemplate()引发DocumentException、FileNotFoundException、IOException{ String TARGET=System.GetProperty(“user.home”)+“\temp.pdf”;
Document Document=新文档(PageSize.a4); PdfWriter writer=PdfWriter.getInstance(document,new FileOutputStream(TARGET)); document.open();编辑:@Bruno Lowagie。与模板包装在一个图像中的提示对我来说听起来刚刚好,我改变了代码根据,但我现在得到的只是一个空的PDF。是我做错了什么,还是这是一个完全错误的方法?
如果您希望一个表适合一个页面,那么您应该在考虑页面大小之前创建该表,并询问该表的高度,就像TableHeight示例中所做的那样。注意,getTotalHeight()
方法返回0,除非您定义了表的宽度。可以这样做:
table.setTotalWidth(width);
table.setLockedWidth(true);
现在,您可以创建一个大小为矩形(0,0,width+margin*2,getTotalHeight()+margin*2)
的文档
并且当您使用WriteSelectedRows()
方法添加该文档时,该表应该完全适合该文档。
如果您不想要自定义页面大小,那么您需要创建一个具有该表大小的pdftemplate
,并将该表添加到此模板对象中。然后将模板对象包装在图像
中,并使用ScaletOfit()
缩小表的大小。
public static void main(String[] args) throws DocumentException, FileNotFoundException, IOException {
String TARGET = "temp.pdf";
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(TARGET));
document.open();
PdfPTable table = new PdfPTable(7);
for (int i = 0; i < 700; i++) {
Phrase p = new Phrase("some text");
PdfPCell cell = new PdfPCell();
cell.addElement(p);
table.addCell(cell);
}
table.setTotalWidth(PageSize.A4.getWidth());
table.setLockedWidth(true);
PdfContentByte canvas = writer.getDirectContent();
PdfTemplate template = canvas.createTemplate(table.getTotalWidth(), table.getTotalHeight());
table.writeSelectedRows(0, -1, 0, table.getTotalHeight(), template);
Image img = Image.getInstance(template);
img.scaleToFit(PageSize.A4.getWidth(), PageSize.A4.getHeight());
img.setAbsolutePosition(0, (PageSize.A4.getHeight() - table.getTotalHeight()) / 2);
document.add(img);
document.close();
}
问题内容: 我正在生成一个文档,就像下面的代码一样,当然,表的内容是变化的。我需要做的是确保无论单元格中的内容量如何,该表的大小都不会超过一页。有办法吗? 编辑:@Bruno Lowagie。模板中包裹着图像的提示听起来很合适,我根据更改了代码,但是现在得到的只是一个空的PDF。我是在做错什么,还是这是完全错误的方法? 问题答案: 如果要使表格适合页面,则应在考虑页面大小之前创建表格,并像Tabl
下面是“DisplayImage”自定义面板相关部分的代码:
我对JPanel和JFrame还是个新手,可能没有按照我应该的方式使用它们。我正在尝试创建Pong游戏,在创建JFrame并将JPanel添加到它之后,我可以调整JPanel的大小,但我不知道如何调整JFrame的大小以适应它。Game类扩展了JPanel。 主: 编辑: 将setSize更改为setPreferredSize,然后为JFrame调用pack()就可以解决所有问题。
我正在尝试使图片适合JLabel。我希望将图片尺寸缩小到更适合我的Swing JPanel的尺寸。 我尝试使用setPreferredSize,但它不起作用。 我在想有没有一个简单的方法来做这件事?我应该为此缩放图像吗?
我有定义了left、right和top约束的NSTextField(没有设置bottom约束)。我需要NSTextField增长,如果内容不能容纳在其中,并减少大小,如果有未使用的空间。 现在我有了:如果NSTextField有多行文本或太多内容,它会以奇怪的行为自动扩展,而且NSTextField在窗口调整大小时不会减小自己的大小。 在Swift上,我还没有找到任何简单的解决方案来解决这个问题(
我试图通过反复更改上的图标来创建一个动画(旋转文本)。问题是这些图像的大小不相同,当它们大于第一个图像的大小时,它们就会被裁剪。 解决这一问题的一种方法是为设置PreferredSize以便所有图像都适合--但我想一定有一种方法可以直接调整包含的的大小? 在下面的代码中,我还尝试将全部删除,创建一个新的jlabel,然后添加新的jlabel,但效果是一样的。 整个面板将在一个applet中使用。