我想在PDF文件中添加位图图章,根据实际的Acrobat Reader打印设置,该图案可以是可打印的或不可打印的。
即。当用户在AR打印对话框组合框中选择选项"文档" - 然后它不会被打印,但是当"文件和邮票"选中后会打印位图。
现在我可以创建可打印或不可打印的位图,但我无法根据用户选择创建可打印和不可打印的位图。
使用PdfStamper。
这可能吗?
答案 0 :(得分:1)
创建戳记注释在my book的第7章中有所描述,更具体地说,在TimeTableAnnotations3示例中描述:
PdfAnnotation annotation = PdfAnnotation.createStamp(stamper.getWriter(),
rect, "Press only", "NotForPublicRelease");
annotation.setFlags(PdfAnnotation.FLAGS_PRINT);
如果您查看打印预览,可以看到如果您打印没有标记的文档,这些注释就不会显示:
在C#中,代码与Java代码非常相似:
PdfAnnotation annotation = PdfAnnotation.CreateStamp(
stamper.Writer, rect, "Press only", "NotForPublicRelease"
);
annotation.Flags = PdfAnnotation.FLAGS_PRINT;
请注意,PDF查看器应至少包含以下名称的预定义图标:
这些图标的外观取决于观众与观众之间的关系。
答案 1 :(得分:1)
我将在这里添加工作解决方案,因为从提供的示例中弄清楚它并不是非常简单。现在PDF文档中有一个自定义位图图章注释,点击后,会出现数字签名的属性窗口。
PdfReader reader = new PdfReader(this.inputPDF);
PdfStamper stamper = new PdfStamper(reader, fs);
PdfSignatureAppearance sap;
Rectangle stampRect = null;
//Add stamp annotation
if (StampImagePath != null && StampImagePath.Length > 0 && File.Exists(StampImagePath))
{
Image stampImg = Image.GetInstance(stampImagePath);
Rectangle location = new Rectangle(stampXpos, stampYpos, stampXpos + stampImg.Width, stampYpos + stampImg.Height);
PdfAnnotation pdfStamp = PdfAnnotation.CreateStamp(
stamper.Writer, location, null, Guid.NewGuid().ToString());
stampImg.SetAbsolutePosition(0, 0);
PdfAppearance app = stamper.GetOverContent(1).CreateAppearance(stampImg.Width, stampImg.Height);
app.AddImage(stampImg);
pdfStamp.SetAppearance(PdfName.N, app);
pdfStamp.SetPage();
pdfStamp.Flags = PdfAnnotation.FLAGS_PRINT;
stamper.AddAnnotation(pdfStamp, 1);
stampRect = location;
}
....
//After signing the document set visible signature to the annotation rectangle
if (stampRect!=null)
sap.SetVisibleSignature(stampRect, 1, "SignatureESift");