【问题标题】:PdfNet readonly annotations are not readonlyPdfNet 只读注释不是只读的
【发布时间】:2016-08-05 13:03:27
【问题描述】:

我正在为 Winforms 使用 PdfNet (C#)。

我希望能够给文本加下划线,所以我创建了一个下划线注释 像这样:

Annot underlineAnnot = Annot.Create(m_document, Annot.Type.e_Underline, rect)
underlineAnnot.SetFlag(Annot.Flag.e_read_only);

根据此页面,无法移动只读注释:https://www.pdftron.com/pdfnet/docs/PDFNet/html/T_pdftron_PDF_Annot_Flag.htm

但是当我使用工具模式 e_annot_edit 移动它时,它实际上确实移动了......

如何“锁定”注释,使其不对鼠标事件做出反应?

【问题讨论】:

  • 你从 Nuget 下载了这个包吗?如果是这样,您能否发布项目的 URL,以便我也可以尝试并尝试为您找到答案?
  • 感谢您对我的帮助,但由于它不是我的,所以有点不可能分享这个项目。

标签: c# winforms annotations pdftron pdfnet


【解决方案1】:

目前查看器不强制只读。

您可以自己轻松完成。

使用以下签名创建一个委托方法。

return false to allow editing, otherwise return true
public bool edit_annot_proc(Annot annot, object obj)
{
    return annot.GetFlag(Annot.Flag.e_read_only);
}

然后在创建 PDFViewCtrl 对象时注册回调

mypdfviewctrl.SetAnnotationEditPermissionHandler(edit_annot_proc, null);

【讨论】:

  • 非常感谢,但我目前使用的是不包含此方法的 5.1 版本。有没有其他方法可以在不升级的情况下做到这一点?
  • 在这种情况下,您将继承 PDFViewCtrl 类,并覆盖 OnMouse[Up|Down] 事件并跳过对 base.OnMouseUp(e) 的调用(如果您不想允许默认值)行为。请参阅 PDFViewTest 示例中的 MyPDFView.cs OnMouseUp。
  • 我真的不想跳过它,在我的项目中应该忽略一些注释。如果一个注释与另一个应忽略的注释重叠,则应使用工具模式 e_annot_edit 仅选择重叠的注释。我猜如果不更新就很难实现这一点,但更新不是我的项目的选择
  • 我通过更改页面上注释的顺序来修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-31
相关资源
最近更新 更多