0

我正在使用 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);
}
4

1 回答 1

0

你真的需要一个PdfPTable吗?

为什么不添加 aParagraph与右对齐的数据,后跟几个Paragraph居中的 s。

然后将图像添加到绝对位置,例如:

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();

请注意,在这种情况下,图像将缩放到单元格的高度。

如果代码没有立即编译,请原谅我,我是用心写的(基于经验),我没有测试实际代码。

于 2013-06-14T09:07:17.937 回答