And*_*ili 0 c# pdf pdf-generation itext itextsharp
我正在使用iTextSharp尝试为我生成的PDF添加页眉和页脚,但是,如果我尝试添加宽度为页面100%的页眉,我会遇到一些问题.
所以我做了以下事情:
1)我创建了一个名为PdfHeaderFooter的类,它扩展了iTextSharp PdfPageEventHelper类
2)进入PdfHeaderFooter我已经实现了生成头的OnStartPage()方法:
// write on start of each page
public override void OnStartPage(PdfWriter writer, Document document)
{
base.OnStartPage(writer, document);
PdfPTable tabHead = new PdfPTable(new float[] { 1F });
PdfPCell cell;
//tabHead.TotalWidth = 300F;
tabHead.WidthPercentage = 100;
cell = new PdfPCell(new Phrase("Header"));
tabHead.AddCell(cell);
tabHead.WriteSelectedRows(0, -1, 150, document.Top, writer.DirectContent);
}
Run Code Online (Sandbox Code Playgroud)
如果我使用像tabHead.TotalWidth = 300F那样的东西; insted的tabHead.WidthPercentage = 100; 它运行良好,但如果我尝试将tabHead.WriteSelectedRows(0,-1,150,document.Top,writer.DirectContent)设置为tabHead表的宽度(就像我在前面的例子中所做的那样)的100%它抛出以下异常的方法:
表格宽度必须大于零.
为什么?问题是什么?如果我将其设置为100%,那么该表的大小是多少?
有人可以帮我解决这个问题吗?
TNX
使用时writeSelectedRows()
,将宽度百分比设置为100%是没有意义的.设置宽度百分比适用于使用document.add()
(在页面事件中不能使用的方法)添加文档时.使用时document.add()
,iText会根据页面大小和边距计算表格的宽度.
您正在使用writeSelectedRows()
,这意味着您有责任定义表的大小和坐标.
如果您希望表格跨越页面的整个宽度,您需要:
table.TotalWidth = document.Right - document.Left;
Run Code Online (Sandbox Code Playgroud)
您还使用了错误的X坐标:您应该使用document.Left
而不是150
.
附加信息:
writeSelectedRows()
需要7个参数的变体).PdfContentByte
实例.这是您绘制表格的画布. 归档时间: |
|
查看次数: |
3317 次 |
最近记录: |