在Android上使用MuPDF注释pdf

时间:2013-08-09 15:48:00

标签: android pdf annotations mupdf

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

非常感谢在这方面提供任何帮助。

提前致谢。

2 个答案:

答案 0 :(得分:3)

您可以通过完全委托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。

答案 1 :(得分:1)

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

使用muPDF无法实现前者。

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

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