我创建了一个包含2列的表.在第一行的第二个单元格中,我想插入另一个只有一个单元格的表格.问题是我无法设置第二个表的高度.它的内容高度超过了内容.它的高度与添加它的细胞高度相等.
我在尝试生成PdfPTable并在将其添加到文档之前计算其高度时遇到问题.calculateHeightsPdfPTable 的方法返回的高度比页面的高度大很多(当表格大约是页面高度的1/4时),所以我写了一个计算高度的方法:
protected Float getVerticalSize() throws DocumentException, ParseException, IOException {
float overallHeight=0.0f;
for(PdfPRow curRow : this.getPdfObject().getRows()) {
float maxHeight = 0.0f;
for(PdfPCell curCell : curRow.getCells()) {
if(curCell.getHeight()>maxHeight) maxHeight=curCell.getHeight();
}
overallHeight+=maxHeight;
}
return overallHeight;
}
Run Code Online (Sandbox Code Playgroud)
其中getPdfObjectmethod返回PdfPTable对象.
使用调试器我发现单元格矩形的lly和ury坐标差异(以及因此高度)比将表格添加到文档后看起来要大得多(例如,一个单元格为20,另一个单元格为38高度在页面上看起来一样).除了带有块的段落外,单元格中没有任何内容:
Font f = getFont();
if (f != null) {
int[] color = getTextColor();
if(color != null) f.setColor(color[0],color[1],color[2]);
ch = new Chunk(celltext, f);
par = new Paragraph(ch);
}
cell = new PdfPCell(par);
cell.setHorizontalAlignment(getHorizontalTextAlignment());
cell.setVerticalAlignment(getVerticalTextAlignment());
Run Code Online (Sandbox Code Playgroud)
然后一个表添加了一个单元格,并将setWidthPercentage属性设置为某个浮点数.我究竟做错了什么?为什么单元格的比例与生成PDF后看到的不同?也许我正在计算身高错误?是不是PDF页面上单元格的高度应严格地说是lly和ury坐标之间的区别
对不起我没有显示确切的代码,因为PDF是使用大量的中间步骤和对象生成的XML是不是很"有用",我猜...
提前谢谢!
所以,我在使用C#(.NET 4.0 + WinForms)和iTextSharp 5.1.2时遇到了这个问题.
我有一些扫描图像存储在数据库中,需要与这些图像一起构建.有些文件只有一页,其他有几百页.这工作正常使用:
foreach (var page in pages)
{
Image pageImage = Image.GetInstance(page.Image);
pageImage.ScaleToFit(document.PageSize.Width,document.PageSize.Height);
pageImage.Alignment = Image.ALIGN_TOP | Image.ALIGN_CENTER;
document.Add(pageImage);
document.NewPage();
//...
}
Run Code Online (Sandbox Code Playgroud)
问题是:
我需要在最后一页的底部添加一个小表.
我尝试:
foreach (var page in pages)
{
Image pageImage = Image.GetInstance(page.Image);
pageImage.ScaleToFit(document.PageSize.Width,document.PageSize.Height);
pageImage.Alignment = Image.ALIGN_TOP | Image.ALIGN_CENTER;
document.Add(pageImage);
document.NewPage();
//...
}
Table t = new table....
document.Add(t);
Run Code Online (Sandbox Code Playgroud)
表已成功添加,但如果图像的大小符合文档的页面大小,则表格将添加到下一页.
我需要调整文档的最后一个图像(如果它有多个,或第一个if只有1),以便将表直接放在该页面上(带有图像),并且两个都只是一页.
我尝试按百分比缩放图像,但是假设最后一页上的图像的图像大小是未知的,并且它必须填充页面的最大部分,我需要做到这一点.
任何的想法?