PDF注释只读.NET

时间:2019-03-28 22:53:24

标签: .net itext pdf-annotations pdf-manipulation

我有一个系统,该系统以图像形式向PDF添加注释。 目前,如果用户下载PDF,则可以单击注释并进行以下操作:移动,调整大小,删除...

我想将注解更改为只读或将其嵌入到PDF中,就像它们是PDF的一部分一样。

有可能吗?有谁知道如何使用.NET做到这一点?

1 个答案:

答案 0 :(得分:0)

您在问题文本中没有提到您选择的PDF库,而是使用(而不是)对其进行了标记;因此,我假设您在5.5.x版本中将iText用于.Net(也称为iTextSharp)。

您可以将注释设为只读,并通过相应地设置注释标志将其锁定,例如像这样:

using (PdfReader pdfReader = new PdfReader(inputPath))
using (PdfStamper pdfStamper = new PdfStamper(pdfReader, outputStream))
{
    PdfArray vertices = new PdfArray(new int[] { 100, 100, 300, 300, 100, 300, 300, 100 });
    PdfAnnotation polyLine = PdfAnnotation.CreatePolygonPolyline(pdfStamper.Writer, pdfReader.GetPageSize(1),
        "", false, vertices);
    polyLine.Color = BaseColor.GREEN;
    polyLine.Flags = PdfAnnotation.FLAGS_READONLY | PdfAnnotation.FLAGS_LOCKED | PdfAnnotation.FLAGS_PRINT;
    pdfStamper.AddAnnotation(polyLine, 1);
}

这些标志的含义

  

打印   (PDF 1.2)如果已设置,除非也设置了“隐藏”标志,否则在打印页面时打印注释。如果清除,则不要打印注释,无论注释是否在屏幕上呈现。如果注释不包含任何外观流,则将忽略此标志。

     

只读   (PDF 1.3)如果已设置,则不允许注释与用户交互。可以渲染或打印注释(取决于NoView和Print标志的设置),但不应响应鼠标单击或响应鼠标动作更改其外观。

     

对于小部件注释,该标志将被忽略;它的功能由关联的表单字段的ReadOnly标志(请参见“表226-所有字段字典共有的条目”)。

     

已锁定   (PDF 1.4)如果设置,则不允许用户删除注释或其属性(包括位置和大小)。但是,此标志并不限制对注释内容的更改,例如表单字段的值。

(ISO 32000-2,表167 —注释标志)