【发布时间】:2018-05-05 19:39:52
【问题描述】:
我正在尝试使用 itextsharp 将页码写入我的 PDF 文档。 我遵循了示例here。这个答案将我指向this implementation in C#的方向。
现在,一切正常 - 假设页面方向为 A4。在我的情况下,它不是。我正在使用横向 A3 页面。因为我想很好地定位页码,所以我需要我正在处理的页面的尺寸。
stamper.GetOverContent().PdfDocument.PageSize 似乎总是返回 A4 页面的尺寸。
这是一个可重现的例子:
using (var ms = new MemoryStream())
{
using (var doc = new Document(PageSize.A3.Rotate()))
{
Debug.WriteLine(doc.PageSize);
var writer = PdfWriter.GetInstance(doc, ms);
doc.Open();
doc.Add(new Paragraph("Hello!"));
}
byte[] firstPass = ms.ToArray();
PdfReader reader = new PdfReader(firstPass);
using (var fs = new FileStream("out2.pdf", FileMode.Create, FileAccess.Write, FileShare.None))
{
using (PdfStamper stamper = new PdfStamper(reader, fs))
{
int totalPages = reader.NumberOfPages;
for (var i = 1; i <= totalPages; i++)
{
var under = stamper.GetUnderContent(i);
var over = stamper.GetOverContent(i);
Debug.WriteLine(under.PdfDocument.PageSize);
Debug.WriteLine(over.PdfDocument.PageSize);
}
}
}
}
其输出为:
矩形:1191x842(旋转:90 度)
RectangleReadOnly:595x842(旋转:0 度)
RectangleReadOnly:595x842(旋转:0 度)
如何正确地获得带有PdfStamper的文档的页面大小?
请注意,这个问题不是关于使用 iTextSharp 生成页码的问题。有各种解决方法。这个问题特别是关于通过PdfStamper 阅读文档的正确尺寸。
【问题讨论】: