4

我正在开发一个 android 应用程序,它应该可以帮助用户注释 PDF 文件。我正在使用 MuPDF 在 android 设备上解析 PDF。我能够阅读 PDF,但无法找到一种方法来帮助我实现 PDF 的注释功能。我找不到任何示例核心,也找不到任何解释我正在寻找的手册。任何人都有任何示例代码、任何其他材料或任何链接,可以让我了解如何在 PDF 文件上支持简单的注释(比如绘制矩形或自由书写)。

非常感谢这方面的任何帮助。

提前致谢。

4

2 回答 2

5

您可以通过完全委托到 MuPDF 库来绘制注释。

为我提供的示例应用程序包含此代码。

MuPDF的本机层中支持这一点的方法是addMarkupAnnotationInternal(int page, PointF[] quadPoints, int type)

传递的 PointF[] 定义了要注释的矩形。这很可能来自用户选择的文本。

如果您使用他们提供的 java 包装器 com.artifex.mupdfdemo.MuPDFCore.java,他们提供的方法称为:

MuPDFCore#addMarkupAnnotation(int page, PointF[] quadPoints, Annotation.Type type)

要查看它实际上是如何完成的以及 MuPDFCore#addMarkupAnnotation 如何从用户的选择中接收四点,请在阅读代码时尝试示例应用程序。

基本上,要添加注释,您需要:

1-提供定义框和突出显示区域的页面的点(四边形)列表。2-通过使用上述方法将注释添加到文档并呈现它,委托到 MuPDF 库中。

第一步,您可能希望让用户选择要突出显示的文档区域。如果是这样,您可以通过以下方式启动选择模式让用户选择:

MuPDFReaderView#setMode(MuPDFReaderView.Mode.Selecting);

当用户完成时,通过以下方式获得选择:

MuPDFView#selectText();

做这一切并不简单,你需要了解 API,所以,我真的建议你阅读示例代码。

至于您将注释保存在哪里,那就是另一回事了。您可以将它们保存在 PDF 文件中(MuPDF 允许您这样做),或者您可以将它们存储在其他任何地方,这将需要更多代码并将注释与 PDF 文件分离。

因此,您可以完全使用 MuPDF 来完成,无需使用 Android API 将注释作为另一层绘制到 Canvas/View。

于 2014-08-06T17:05:36.587 回答
1

要将注释存储在 PDF 文件中还是单独存储?

muPDF 无法实现前者。

但是,如果您打算单独存储注释,那么您可以想象将 PDF 渲染到画布作为背景,然后在其上绘制。您仍然需要编写相当于绘图应用程序的内容。Android 示例中有“FingerPaint”,开源中也有Android Paint 。

如果要突出显示 PDF 中的特定文本,事情会变得相当复杂。您必须从 fitz 提取字符尺寸并在触摸处理程序中管理各种光标。这并非不可能,但远非微不足道。

于 2013-08-09T16:03:44.570 回答