Comment faire des annotations comme mettre en évidence, barrer, souligner, dessiner, append du texte, etc. dans Android pour un lecteur PDF?

  • De nombreuses applications telles que RepliGo, Aldiko, Mantano, ezPdf sur Android Market rendent ce type d’annotation dans leur visionneuse de pdf illustrée dans l’image ci-dessous.
  • J’ai essayé de nombreuses manières d’implémenter cette annotation mais j’ai échoué. J’ai un lecteur de pdf pour android et le code java séparé pour les annotations en utilisant iText pour dessiner des lignes.
  • Ma question est de savoir si je peux mettre en œuvre iText dans Android. Si c’est possible, quel paquet dois-je importer?
  • Dans certaines applications, une méthode de dessin est également utilisée pour dessiner des lignes. Est-il possible d’inclure cette méthode de canvas dans Android au lieu d’utiliser une annotation?. L’objective serait d’avoir les mêmes fonctionnalités que les annotations.
  • Dans l’image ci-dessous (RepliGo PDF Reader), quel type de code utilisait-il pour les annotations? entrer la description de l'image ici

Votre question semble être de savoir quelles sont les méthodes permettant aux utilisateurs d’annoter sur un fichier PDF dans android / java, alors voici une méthode pour vous, même si ce n’est pas la meilleure solution.

J’aimerais souligner qu’il n’est pas nécessaire de modifier le fichier PDF pour permettre aux utilisateurs d’append et d’afficher des annotations. Votre application pourrait simplement stocker les données pour les annotations séparément, stocker ces annotations pour chaque fichier et les charger lorsque le fichier est chargé.

Cela signifie qu’il ne créera pas un nouveau fichier PDF avec ces annotations, mais stockera simplement les données utilisateur pour chaque fichier PDF chargé dans votre application et les affichera lorsque l’utilisateur charge à nouveau le fichier PDF. (Donc, il semble être annoté).

Exemple:

  1. Lire le texte du fichier PDF, le formatage du texte et les images dans votre application
  2. Afficher un document (comme un traitement de texte)
  3. Permettre à l’utilisateur de modifier et d’annoter le document
  4. Enregistrer les modifications et les données d’annotation dans votre application (pas le fichier PDF)
  5. Lorsque vous chargez à nouveau le fichier, appliquez les modifications et les annotations précédemment stockées.

Votre classe d’annotation pourrait ressembler à ceci:

class Annotations implements Serializable { public Annotations() { annotations = new HashSet(); } public ArrayList getAnnotations() { return new ArrayList(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 annotations; } 

Vous stockez donc les données d’affichage des annotations ici, et lorsque vous chargez le fichier et son object Annotations respectif (sérialisé), vous pouvez utiliser chaque annotation pour modifier l’affichage des caractères entre startPos et endPos dans votre document.

Bien que j’aie utilisé int s pour les deux positions startPos et endPos , vous pouvez également utiliser deux variables ou plus pour faire référence aux index de tableaux, aux index de tables de firebase database SQLite, aux positions de caractères des documents texte simples; quelle que soit votre implémentation, vous pouvez simplement changer cela pour que vous sachiez où commencer à annoter et où vous devez vous annoter avec ce type d’annotation.

En outre, vous pouvez configurer des écouteurs de modification de propriété afin que, lorsque les propriétés d’annotation sont modifiées, elles déclenchent des méthodes pour mettre à jour votre affichage / vue.

L’annotation PDF est une source ouverte et un bon point pour commencer avec https://code.google.com/p/pdf-annotation/