因此,我将画布笔触应用于pdf,但是笔触应用于单元格文本。但是只有第一个单元格。
以下是绘制页面边框的方法:
protected void DrawPageBorder(PdfWriter writer, Document document, PdfContentByte canvas)
{
var pageBorderRect = new Rectangle(document.PageSize);
var content = writer.DirectContent;
pageBorderRect.Left += document.LeftMargin - BorderDifference;
pageBorderRect.Right -= document.RightMargin - BorderDifference;
pageBorderRect.Top -= document.TopMargin - BorderDifference;
pageBorderRect.Bottom += document.BottomMargin - BorderDifference;
content.SetLineDash(3f, 3f);
content.SetRGBColorStroke(236, 236, 236);
//canvas.SetLineWidth(FillOpacity);
//canvas.SetRGBColorStroke(0, 0, 0);
//canvas.SetRGBColorStroke(236, 236, 236);
//canvas.SetLineDash(3f, 3f);
content.Rectangle(pageBorderRect.Left, pageBorderRect.Bottom, pageBorderRect.Width, pageBorderRect.Height);
content.Stroke();
}
这是添加带有边框的pdf表的代码:
var docTable = new PdfPTable(1);
docTable.WidthPercentage = 100f;
PdfContentByte canvas = new PdfContentByte(pdfWriter);
DrawPageBorder(pdfWriter, doc, canvas);
这是添加第一个表格单元格的代码:
titleFont.Size = 24.0f;
var text1 = new PdfPCell(new Phrase("To:", titleFont))
{
HorizontalAlignment = Element.ALIGN_LEFT,
Border = Rectangle.NO_BORDER,
PaddingTop = 20f,
PaddingLeft = 9f,
PaddingRight = 9f
};
docTable.AddCell(text1);
有人知道我在哪里错吗?
谢谢
答案 0 :(得分:0)
每当您将高级api内容创建(如对表的处理)和低级api绘图(如在DrawPageBorder
中的处理)混合使用时,请确保您的低级代码不会对图形进行任何更改状态参数。
您的代码保留对LineDash和描边颜色的更改。
您可以通过以安全图形状态/还原图形状态信封将代码图形包装在content
上来实现。
您的情况:
content.SaveState();
content.SetLineDash(3f, 3f);
content.SetRGBColorStroke(236, 236, 236);
//canvas.SetLineWidth(FillOpacity);
//canvas.SetRGBColorStroke(0, 0, 0);
//canvas.SetRGBColorStroke(236, 236, 236);
//canvas.SetLineDash(3f, 3f);
content.Rectangle(pageBorderRect.Left, pageBorderRect.Bottom, pageBorderRect.Width, pageBorderRect.Height);
content.Stroke();
content.RestoreState();