69 votes

Comment faire de l'annotation comme mettant en évidence, barré, souligné, dessiner, ajouter du texte, etc dans android pour une visionneuse de pdf?

  • De nombreuses applications comme RepliGo, Aldiko, Mantano, ezPdf dans l'android market faire ce type d'annotation dans leur visionneuse pdf illustré dans l'image ci-dessous.
  • J'ai essayé de nombreuses façons de mettre en œuvre cette annotation, mais j'ai échoué. J'ai un pdf viewer pour android et séparée de code java pour les annotations à l'aide de la bibliothèque iText pour dessiner des lignes.
  • Ma question est puis-je en mesure de mettre en œuvre iText dans android. Si c'est possible, quelle formule dois-je importer?
  • Aussi, dans certaines applications, une toile méthode est utilisée pour dessiner des lignes. Est-il possible d'inclure cette toile méthode dans android au lieu d'utiliser une annotation?. L'objectif serait d'avoir les mêmes caractéristiques que les annotations ont.
  • Dans l'image ci-dessous (RepliGo Reader PDF) le type de code ont-ils utiliser pour les annotations? enter image description here

6voto

Ozzy Points 4358

Votre question semble être ce que sont les méthodes pour permettre aux utilisateurs d'annoter un fichier PDF en android/java, voici donc une méthode pour vous, mais il peut ne pas être la meilleure solution.

Je tiens à souligner qu'il n'est pas nécessaire de modifier la réelle fichier PDF simplement pour permettre aux utilisateurs d'ajouter et afficher les annotations. Votre application peut enregistrer les données pour les annotations séparément, de stocker ces annotations pour chaque fichier, et de les charger lorsque le fichier est chargé.

Cela signifie qu'il ne va pas créer un nouveau fichier PDF avec ces annotations placé, mais au lieu de cela, il va juste stocker des données utilisateur pour chaque fichier PDF qui est chargé dans votre application, et d'afficher lorsque l'utilisateur charge le fichier PDF de nouveau. (Il semble être annoté).

Exemple:

  1. Lire fichier PDF, texte, mise en forme du texte et des images dans votre application
  2. Affichage d'un document (comme un traitement de texte)
  3. Permettre à l'utilisateur d'éditer et annoter le document
  4. Enregistrer les modifications et d'annotation de données dans votre application (pas le fichier PDF)
  5. Lors du chargement d'un nouveau fichier, appliquer les modifications et annotations stockées précédemment.

Votre annotation classe pourrait ressembler à quelque chose comme ceci:

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;
}

Donc, vous êtes juste le stockage de l'annotation-afficher les données ici, et lorsque vous chargez le fichier et son respectives (sérialisés) les Annotations de l'objet, vous pouvez utiliser chaque annotation à affecter la façon dont vous afficher des caractères entre l' startPos et endPos dans votre document.

Bien que j'ai utilisé ints pour les deux positions startPos et endPos, vous pouvez également utiliser deux ou plus de deux variables pour désigner les indices de tableau, base de données SQLite index de table, char positions pour de simples documents de texte; quelle que soit votre application est que vous pouvez simplement modifier de manière à ce que vous savez par où commencer annoter et où à la fin de l'annotation avec qui AnnotationType.

Aussi, vous pouvez configurer un changement de propriété d'auditeurs, de sorte que lors de l'annotation des propriétés sont modifiées ils incendie au large de méthodes pour mettre à jour votre affichage/vue.

0voto

Ravi K. Sharma Points 310

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X