如何使注解,如突出显示,删除线,下划线,绘制,添加文本等在Android中的PDF查看器?

  • 许多应用程序,如RepliGo,Aldiko,Mantano,ezPdf在Android市场使这种types的注释在他们的PDF查看器显示在下面的图像。
  • 我尝试了很多方式来实现这个注释,但是我失败了。 我有一个PDF浏览器的android和单独的java代码注释使用iText绘制线条。
  • 我的问题是我可以在android中执行iText。 如果可能,我必须导入哪个软件包?
  • 同样在一些应用程序中,使用canvas方法绘制线条。 是否有可能在Android中包含此canvas方法,而不是使用注释? 目标是具有注释所具有的相同function。
  • 在下面的图片(RepliGo PDF阅读器)他们使用哪种代码注释? 在这里输入图像说明

你的问题似乎是允许用户注释在Android / Java中的PDF文件的方法是什么,所以这里是一个方法,虽然它可能不是最好的解决scheme。

我想指出的是,实际上并不需要编辑实际的PDF文件,只是为了允许用户添加和查看注释。 您的应用程序可以单独存储注释数据,存储每个文件的注释,并在加载文件时加载它们。

这意味着它不会创build一个带有这些注释的新PDF文件,而只是存储每个加载到应用程序中的PDF文件的用户数据,并在用户再次加载PDF文件时显示该文件。 (所以它似乎被注释)。

例:

  1. 阅读PDF文件的文本,文本格式和图像到您的应用程序
  2. 显示文档(如文字处理器)
  3. 允许用户编辑和注释文档
  4. 保存更改和注释数据在您的应用程序(而不是PDF文件)
  5. 当再次加载文件时,应用先前存储的更改和注释。

你的注解类可能看起来像这样:

class Annotations implements Serializable { public Annotations() { annotations = new HashSet<Annotation>(); } public ArrayList<Annotation> getAnnotations() { return new ArrayList<Annotation>(annotations); } public Annotation annotate(int starpos, int endpos) { Annotation a = new Annotation(startpos, endpos); annotations.add(a); return a; } public void unannotate(Annotation a) { annotations.remove(a); } static enum AnnotationTypes { HIGHLIGHT, UNDERLINE; } class Annotation { int startPos, endPos; AnnotationTypes type; Color color; Annotation(int start, int end) { startPos = start; endPos = end; } public void update(int start, int end) { startPos = start; endPos = end; } public void highlight(int red, int green, int blue) { type = AnnotationTypes.HIGHLIGHT; color = new Color(red, green, blue); } public void underline(int red, int green, int blue) { type = AnnotationTypes.UNDERLINE; color = new Color(red, green, blue); } // getters ... } private Set<Annotation> annotations; } 

因此,您只需在此处存储注释显示数据,并且在加载文件及其相应的(序列化的)Annotations对象时,可以使用每个注释来影响在文档中如何显示startPosendPos之间的字符。

尽pipe我用int s作为startPosendPos这两个位置,但也可以使用两个或多个variables来引用数组索引,SQLite数据库表索引,简单文本文档的字符位置; 无论你的实现是什么,你都可以改变它,这样你就知道在哪里开始注释以及在哪里结束使用AnnotationType进行注释。

此外,您可以设置属性更改侦听器,以便当注释属性更改时,它们将引发更新显示/视图的方法。

Pdf-annotation是一个开源的,很好的开始https://code.google.com/p/pdf-annotation/