1

首先,我在使用 iText7 的 pdf 文件中添加了一个关于绘图的修订日期的图章……我明白了。其次,如果我更新图纸,需要更新印章信息,最简单的,删除印章并重新添加。但是,我无法获得 pdf 格式的邮票。

PdfArray stamps = page.GetPdfObject().GetAsArray(PdfName.Stamp);

我找到这种方式来获得邮票,但邮票是空的。我应该怎么办?

在此处输入图像描述

4

1 回答 1

0

根据评论,您添加了有问题的邮票,如下所示:

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

于 2021-06-02T11:59:07.047 回答