我使用iTextSharp导出PDF格式的报告。报告的标题应具有以下格式:
问题是将报告标题与页面中心对齐,而页面左侧有一个图像。当我使用表格时,报表标题按其单元格的中心对齐,而不是按页面中心对齐。有更好的方法吗?
修改 添加标题的代码如下:
var doc = new Document(pageSize, margins.Width, margins.Width, margins.Height, margins.Height);
using (PdfWriter.GetInstance(doc, destination))
{
doc.Open();
var headerTable = new PdfPTable(1){ WidthPercentage = 100 };
RenderHeader(headerTable); // adds several lines to headerTable
doc.Add(headerTable);
}
答案 0 :(得分:0)
你真的需要PdfPTable
吗?
为什么不添加Paragraph
包含右对齐的数据,然后添加几个居中的Paragraph
。
然后将图像添加到绝对位置,例如:
Image img = Image.GetInstance(path_to_image);
img.SetAbsolutePosition(36, PdfWriter.getVerticalPosition(true));
document.Add(Image);
另一种选择是在表或单元格事件中添加Image
,而不是将其直接添加到表中。假设您的PdfPTable
由一行和一列组成,那么您可以定义一个像这样的单元格事件:
public class ImageCell : IPdfPCellEvent {
public void CellLayout(
PdfPCell cell, Rectangle position, PdfContentByte[] canvases
) {
float x1 = position.Left + 2;
float y1 = position.Top - 2;
float y2 = position.Bottom + 2;
PdfContentByte canvas = canvases[PdfPTable.LINECANVAS];
Image img = Image.GetInstance(path_to_image);
img.scaleToFit(10000, y1 - y2);
img.SetAbsolutePosition(x1, y2);
canvas.AddImage(img);
}
}
假设该单元格是带有日期和标题的PdfPCell,那么您可以这样做:
cell.CellEvent = new ImageCell();
请注意,在这种情况下,图像将缩放到单元格的高度。
请原谅我,如果代码不能立即编译,我是在写这个(基于经验),我没有测试实际的代码。