- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 iTextSharp (v5.5.10) 渲染带有图像网格的 PDF。所有图像都具有相同的尺寸,并且应均匀分布在一页上。
但是,使用下面提到的代码,我很难设置适当的边距或单元格之间的间距。
从视觉上看,这意味着预期的结果是这样的:
黄色突出显示线是我得到以下结果的问题:
注意到图像之间没有空格吗?这是基于我的以下代码:
public void CreateGridOfImages(string outputFilePath)
{
// note: these constants are in millimeters (mm),
// which are converted using the ToPoints() helper later on
const float spacingBetweenCells = 7;
const float imageWidth = 80;
const float imageHeight = 80;
const string[] images = new [] { "a.jpg", "b.jpg", "c.jpg" };
using (var stream = new FileStream(outputFilePath, FileMode.CreateNew, FileAccess.Write, FileShare.None))
{
var document = new iTextSharp.text.Document(PageSize.B2, 0f, 0f, 0f, 0f);
var writer = PdfWriter.GetInstance(document, stream);
try
{
document.Open();
var table = new PdfPTable(5);
table.DefaultCell.Border = Rectangle.NO_BORDER;
foreach (var imagePath in images)
{
var img = iTextSharp.text.Image.GetInstance(imagePath);
img.ScaleToFit(ToPoints(imageWidth), ToPoints(imageHeight));
var cell = new PdfPCell();
// THIS IS THE PROBLEM... HOW TO SET IMAGE SPACING?
var cellMargin = ToPoints(spacingBetweenCells);
cell.AddElement(img);
table.AddCell(cell);
}
document.Add(table);
}
catch (Exception ex)
{
throw ex;
}
finally
{
document.Close();
}
}
}
private float ToPoints(float millimeters)
{
// converts millimeters to points
return iTextSharp.text.Utilities.MillimetersToPoints(millimeters);
}
现在这看起来微不足道。可能是这样,但我尝试了几种选择,但它们都无法正常工作(或根本无法正常工作):
我的预感是 IPdfPCellEvent
似乎是正确的方法。但所有 iText 选项和变体都令人难以抗拒。
总结一下,有谁知道如何正确设置单元格之间的边距/间距?
最佳答案
在 iText 表格中的单元格之间创建白色间距的唯一方法是将相关边框设置为背景颜色并使用单元格的填充。我创建单元格的关键代码是:
for(int i = 0; i < nrCols* nrRows;i++) {
var img = Image.GetInstance(imagePath);
img.ScaleToFit(ToPoints(imageWidth), ToPoints(imageHeight));
//Create cell
var imageCell = new PdfPCell();
imageCell.Image = img;
imageCell.Border = Rectangle.BOX;
imageCell.BorderColor = useColor? BaseColor.YELLOW : BaseColor.WHITE;
//Play with this value to change the spacing
imageCell.Padding = ToPoints(spacingBetweenCells/2);
imageCell.HorizontalAlignment = Element.ALIGN_CENTER;
grid.AddCell(imageCell);
}
至于为什么向 PdfPCell 添加填充似乎不起作用:
尽管如此,在您的示例中仍然绘制边框的原因
table.DefaultCell.Border = Rectangle.NO_BORDER;
是因为您从不使用默认单元格,因为您使用 var cell = new PdfPCell();
创建了一个自定义单元格,并将自定义单元格传递给 table.AddCell(cell);
。如果您使用了table.addCell(img)
,则边框不会在那里(尽管您的填充仍然不是您想要的间距,因为它没有在默认单元格上设置) .
关于c# - 在 iTextSharp PdfPTable 中的图像网格之间设置边距或单元格间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40817511/
我正在尝试创建一个表数组(2 个表)。我的程序在最后一行停止并出现空指针异常。知道为什么吗? com.lowagie.text.pdf.PdfPTable[] table = new com.lowa
我正在使用 iText 库以 pdf 文件中的表格格式打印某些数据。我有 11 列,可以有多行。在为每一列的标题创建标题后,如何在 pdfptable 中创建一个新行,以便我可以在单独的行上打印真实数
标题内容和 Pdftable 重叠 我该如何放置 PdfPTable 在 pdf 页面中的任何位置使用 (x, y) 定位,如 (100, 200) 或 (15, 100) 在pdf页面上的任何地方?
我正在使用 iTextSharp PdfPTtable 从数据库创建表。当表格很长时(很长但只有 3 列),我设法让表格流动(或继续)到下一个 PDF 页面。但我希望他们继续在同一页的右侧(或列)。之
我正在使用由单个 PdfTable 组成的 ITextSharp 创建 PDF。不幸的是,对于特定数据集,由于创建了大量 PdfPCells,我遇到了内存不足异常(我已经分析了内存使用情况——我有将近
我正在使用 PDFPTable 通过 Itextsharp 中的数据库构建表格,要求表格中的行/单元格没有顶部或底部底部边框,但每个单元格的左侧和右侧都有黑色边框(换句话说,每列都有一个左右边框),表
我正在尝试将旧的 XLS 表格生成器转换为 PDF 表格生成器。在 HSSFWOrkbook 中,实际上可以在创建时设置单元格索引。但是如何对 PDF 中的 PdfPTable 执行相同操作呢?唯一可
我在我的应用程序中使用 iText。 我将向 iText PDF 生成器类发送一个数组集合。该数组集合有 10 个项目,现在,我想在表格中显示这 10 个项目。 显示表格的条件是每页只需显示5项,剩余
你好,我想知道是否可以旋转 PdfPTable。我有一个 pdf 模板,我需要在特定元素下添加一个表格,但我找不到实现此目的的方法。我尝试将表格添加到段落中,但我无法旋转该段落。这是我的代码 PdfP
我是 iTextSharp 的初学者,我编写了这段代码以在 PdfPTable 中创建 RoundRectangle 并在页面中心对齐表格 string pdfpath = Server.MapPa
我想创建一个 PdfPTable,其中的列包含不同长度的字符串。我了解到每个单元格/列的宽度对于每列(默认)是相同的,或者可以设置每列应占用的空间分数。 但是,我希望列的宽度与需要的一样宽,但不能更宽
我正在生成一个文档,就像下面的代码一样,当然除了表格的内容是不同的。我需要做的是确保此表的大小永远不会超过一页,无论单元格中的内容有多少。有办法吗? import com.itextpdf.text.
我正在使用 itextsharp 在 pdf 上动态书写。我正在 pdf 文档中创建一个表,其中包含数据库中的值。谁能告诉我如何修改表中值的字体大小。 最佳答案 试试这个: Font fontH1 =
我目前正在使用 Itextsharp,但在使用 PDfPtables 时遇到了一些麻烦。 有时它们对于一页来说太大了,并且当添加到文档中时,它们会被分成多个页面。 可悲的是,我的一些上司无法接受这种理
如何让 iTextSharp 在生成的 PDF 的每个页面上重复 PdfPTable 的标题? 最佳答案 您只需将 PdfPTable.HeaderRows 属性设置为 PdfPTable heade
我必须使用 itext 创建一个 pdf,其中包含一个按钮,单击时应在现有 PdfPTable 中添加一行。我编写了一些代码来创建 PushbuttonField。在尝试设置操作时,我只能找到 Pdf
我有一个 JTable,并使用 JFilter 根据用户输入过滤其内容。现在我打算使用 iText 库将 JTable 的内容导出到 PdfPTable。使用过滤器时,内容无法正确复制。但是,如果不使
我正在尝试使用 iTextSharp (v5.5.10) 渲染带有图像网格的 PDF。所有图像都具有相同的尺寸,并且应均匀分布在一页上。 但是,使用下面提到的代码,我很难设置适当的边距或单元格之间的间
我正在使用 iTextSharp 创建 PDF 文档。我看到了如何创建一个包含多个列的新表,但无论如何我都看不到动态添加一个新列。我遇到的问题是我不会立即知道我需要的列数,因此需要继续添加它们 有人可
如何在 PdfPTable 列中插入新的空行。 \n 和 n 个空格 并没有为我解决问题。这是我正在使用的java代码。 chtbc_report1_table.setModel(new javax.
我是一名优秀的程序员,十分优秀!