iText7 删除图章
iText7 remove stamp
首先,我为使用 iText7 的 pdf 文件添加了图章,关于绘图的更新日期...我明白了。
第二,如果我更新图纸,需要更新图章信息,最简单的,删除图章重新添加。但是,我无法获得 pdf 格式的邮票。
PdfArray stamps = page.GetPdfObject().GetAsArray(PdfName.Stamp);
我找到了这种获取邮票的方式,但是邮票是空的。我该怎么办?
根据评论,您添加了有问题的邮票,如下所示:
PdfStampAnnotation stampAnno = new PdfStampAnnotation(stampRect).SetStampName(new PdfName("StampRML"));
PdfFormXObject stampObj = tempDoc.GetFirstPage().CopyAsFormXObject(pdfDoc);
stampAnno.SetNormalAppearance(stampObj.GetPdfObject());
stampAnno.SetFlags(PdfAnnotation.PRINT);
page.AddAnnotation(stampAnno);
即作为印章名称的印章注释 StampRML.
因此,要再次删除它,只需删除所有具有该戳记名称的注释,例如像这样:
using (PdfReader pdfReader = new PdfReader(SOURCE_WITH_STAMP))
using (PdfWriter pdfWriter = new PdfWriter(RESULT_WITHOUT_STAMP))
using (PdfDocument pdfDocument = new PdfDocument(pdfReader, pdfWriter))
{
for (int pageNr = 1; pageNr <= pdfDocument.GetNumberOfPages(); pageNr++)
{
PdfPage page = pdfDocument.GetPage(pageNr);
IList<PdfAnnotation> annotations = page.GetAnnotations();
for (int i = annotations.Count - 1; i >= 0; i--)
{
PdfAnnotation annotation = annotations[i];
if (annotation is PdfStampAnnotation stamp)
{
if ("/StampRML" == stamp.GetStampName()?.ToString())
{
page.RemoveAnnotation(stamp);
}
}
}
}
}
(RemoveStampAnnotation 测试 testRemoveStampByShen
)
首先,我为使用 iText7 的 pdf 文件添加了图章,关于绘图的更新日期...我明白了。 第二,如果我更新图纸,需要更新图章信息,最简单的,删除图章重新添加。但是,我无法获得 pdf 格式的邮票。
PdfArray stamps = page.GetPdfObject().GetAsArray(PdfName.Stamp);
我找到了这种获取邮票的方式,但是邮票是空的。我该怎么办?
根据评论,您添加了有问题的邮票,如下所示:
PdfStampAnnotation stampAnno = new PdfStampAnnotation(stampRect).SetStampName(new PdfName("StampRML"));
PdfFormXObject stampObj = tempDoc.GetFirstPage().CopyAsFormXObject(pdfDoc);
stampAnno.SetNormalAppearance(stampObj.GetPdfObject());
stampAnno.SetFlags(PdfAnnotation.PRINT);
page.AddAnnotation(stampAnno);
即作为印章名称的印章注释 StampRML.
因此,要再次删除它,只需删除所有具有该戳记名称的注释,例如像这样:
using (PdfReader pdfReader = new PdfReader(SOURCE_WITH_STAMP))
using (PdfWriter pdfWriter = new PdfWriter(RESULT_WITHOUT_STAMP))
using (PdfDocument pdfDocument = new PdfDocument(pdfReader, pdfWriter))
{
for (int pageNr = 1; pageNr <= pdfDocument.GetNumberOfPages(); pageNr++)
{
PdfPage page = pdfDocument.GetPage(pageNr);
IList<PdfAnnotation> annotations = page.GetAnnotations();
for (int i = annotations.Count - 1; i >= 0; i--)
{
PdfAnnotation annotation = annotations[i];
if (annotation is PdfStampAnnotation stamp)
{
if ("/StampRML" == stamp.GetStampName()?.ToString())
{
page.RemoveAnnotation(stamp);
}
}
}
}
}
(RemoveStampAnnotation 测试 testRemoveStampByShen
)