首页 > 解决方案 > PDF 注释只读 .NET

问题描述

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

我想要一种将注释更改为只读或将它们嵌入到 PDF 中的方法,就像它们是 PDF 的一部分一样。

那可能吗?任何人都知道如何使用 .NET 实现这一目标?

标签: .netitextpdf-annotationspdf-manipulation

解决方案


您没有在问题文本中提及您选择的 PDF 库,但您使用(而不是)标记了它;因此,我假设您在 5.5.x 版本中使用 iText for .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 - 注释标志)


推荐阅读