我一直在尝试使用iTextSharp在PDF文件上定位文本水印,我正在努力寻找每页上的坐标。当pdf文件中的所有页面旋转相同但旋转不同时,坐标完全不同。
PdfImportedPage page = stamper.GetImportedPage(pdfReader, i);
var rotationValue = page.Rotation;
并添加水印
cb.ShowTextAligned(PdfContentByte.ALIGN_LEFT, "This is WaterMark 1", 20, 20, 90f);
此代码无法在页面上找到X和Y位置。 如何获得我想添加水印的确切位置?
答案 0 :(得分:0)
这个问题在一篇用法语撰写的文章中得到了解答,该文章基于我用英语回答的几个StackOverflow问题:Comment créer un filigrane transparent en PDF?
此博客文章所基于的问题是:
这些问题及其答案可以在The Best iText Questions on StackOverflow找到,这是一本可以从iText网站下载的免费电子书。它还包含一些从未在StackOverflow上发布的答案。
您不应导入页面以查找轮换。还有其他方法可以获取这些信息。您会注意到,您可以使用getPageSize()
和GetPageSizeWithRotation()
方法,具体取决于您是否希望获得页面大小以及旋转(还有GetRotation()
方法)。
此外,您应该尝试使用RotateContents
属性:
stamper.RotateContents = false;
我不清楚您是否希望水印跟随或忽略旋转,但是GetPageSize()
和GetPageSizeWithRotation()
方法,您将能够避免使用硬编码值,例如x = 20; y = 20
(在您的代码段中完成)。如果您想要页面i
的中间坐标,则可以使用以下代码:
Rectangle pagesize = reader.GetPageSizeWithRotation(i);
x = (pagesize.Left + pagesize.Right) / 2;
y = (pagesize.Top + pagesize.Bottom) / 2;