C# Itextsharp向所有pdf页面添加边框

C# Itextsharp向所有pdf页面添加边框,c#,pdf,itext,C#,Pdf,Itext,我在pdf中添加了一个大表格(大约有4到5页的pdf封面)。 我用下面的代码在pdf中添加了一个大表格(大约有4到5页的pdf封面)。(工作守则罚款) 上面的代码成功生成PDF,现在我想为所有生成的页面添加边框。 我搜索了一下,发现可以使用PdfContentByte或Rectangle,但这并没有给所有页面添加边框,或者可能是我遗漏了什么 使用PageEvent可以使用其他选项,但我使用的是WEB API,因此可能无法实现事件侦听器 更新: 我的类定义如下:(是否可以重写页面事件(onedpa

我在pdf中添加了一个大表格(大约有4到5页的pdf封面)。 我用下面的代码在pdf中添加了一个大表格(大约有4到5页的pdf封面)。(工作守则罚款)

上面的代码成功生成PDF,现在我想为所有生成的页面添加边框。 我搜索了一下,发现可以使用
PdfContentByte
Rectangle
,但这并没有给所有页面添加边框,或者可能是我遗漏了什么

使用
PageEvent
可以使用其他选项,但我使用的是WEB API,因此可能无法实现事件侦听器

更新: 我的类定义如下:(是否可以重写页面事件(onedpage))


如果无法使用OneDPage,可以尝试以下代码:

 //Add border to page
    PdfContentByte content = writer.DirectContent;
    Rectangle rectangle = new Rectangle(document.PageSize);
    rectangle.Left += document.LeftMargin;
    rectangle.Right -= document.RightMargin;
    rectangle.Top -= document.TopMargin;
    rectangle.Bottom += document.BottomMargin;
    content.SetColorStroke(Color.BLACK);
    content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height);
    content.Stroke();

根据。

每当您想以类似的方式对所有生成的页面执行某些操作时,您通常会使用页面事件(更准确地说是它们的
onEndPage
)来完成此操作。在这里,您使用了您所了解的
PdfContentByte
方法。是。但我使用的是WEB API,因此无法覆盖OneDPage。为什么WEB API会阻止使用
OneDPage
?这听起来很荒谬。你们试过使用页面事件吗?Hello@BrunoLowagie,我认为要使用OneDPage,我需要实现我的类的接口。我无法做到这一点。您不仅限于将所有内容放入控制器,还可以使用多个自己的类。我认为它不会为所有页面添加边框。它只添加到最后一页您提供的代码不会为所有页面添加边框事实上:该代码为当前页面添加了一个矩形。它不会在每个页面上添加一个矩形。这篇文章没有回答这个问题;它应该被移除或改进。改进:解释如何使用页面事件;或者解释如何在第二遍中添加矩形。
public class PDFTaskController : ApiController
{
 // here my all pdf task related methods i.e. CreateTableDocument()
}
 //Add border to page
    PdfContentByte content = writer.DirectContent;
    Rectangle rectangle = new Rectangle(document.PageSize);
    rectangle.Left += document.LeftMargin;
    rectangle.Right -= document.RightMargin;
    rectangle.Top -= document.TopMargin;
    rectangle.Bottom += document.BottomMargin;
    content.SetColorStroke(Color.BLACK);
    content.Rectangle(rectangle.Left, rectangle.Bottom, rectangle.Width, rectangle.Height);
    content.Stroke();