我可以使用PDFStamper和PdfContentByte content.AddImage方法将图像叠加到现有PDF文档上 .
当现有文档已经覆盖在顶部的图像时,我的问题出现了 . 您实际上可以看到我想要覆盖的小图像的上边缘 . 它显然隐藏在现有图像叠加层下方 .
我在尝试让覆盖的图像显示在现有图像叠加层之上时遇到问题 .
我的代码:
System.Drawing.Image bitmap
PdfReader pdfReader = new PdfReader(pathToOriginalPdf);
PdfStamper pdfStamper = new PdfStamper(pdfReader, new FileStream(pathToTimestampedPdf, FileMode.Create, FileAccess.Write, FileShare.None));
MemoryStream imageStream = new MemoryStream();
bitmap.Save(imageStream, ImageFormat.Bmp);
byte[] bitmapBytes = imageStream.ToArray();
iTextSharp.text.Image image = Image.GetInstance(bitmapBytes);
PdfContentByte underContent;
try
{
underContent = pdfStamper.GetOverContent(1);
underContent.AddImage(image);
}
我需要一种方法来将现有图像叠加展平到PDF内容上或设置z顺序,以便我新添加的叠加层可以位于顶部 .
出于某种原因,PdfStamper选择将新图像置于现有图像之下 .
提前致谢 .
1 回答
如果我们能够看到有问题的PDF,那将会有所帮助 . 然后我们不必猜测,我们会知道 .
尽管如此,我怀疑你的“现有图像叠加”是注释的一部分 . 您放入页面内容的任何内容都不会出现在注释上方 .
选项(如果我是对的):
添加自己的注释
为此,我将使用带有LAYOUT_ICON_ONLY的PushbuttonField . 将图像绘制成
PdfTemplate
,然后将其用于按钮的"icon" .注释的Z顺序由页面注释数组的顺序决定 . 新注释将附加到此数组 . 没问题 .
您可能需要使用setScaleIcon(),setHorizontalAdjustment(),setVerticalAdjustment(),setProportionalIcon()以及其他几个来使您的图像看起来完全符合您的需求 .
在一次通过时展平,将图像添加到另一个通道中
如果现有的图像注释是iText可以展平的东西(可能,也许不是),你可以在两遍中做你想做的事 . 第一遍只是“setFormFlattening(true); close();”,而第二遍就是你现在所做的一切 .