2012-02-06 8 views
69
  • Wiele aplikacji, takich jak RepliGo, Aldiko, Mantano, ezPdf na rynku Android, robi tego typu adnotacje w ich przeglądarce plików PDF pokazanych na poniższym obrazku.
  • Próbowałem na wiele sposobów wdrożyć tę adnotację, ale mi się nie udało. Mam przeglądarkę pdf dla Androida i oddzielny kod java dla adnotacji używających iText do rysowania linii.
  • Moje pytanie jest w stanie zrealizować iText w Androidzie. Jeśli to możliwe, który pakiet mam zaimportować?
  • Również w niektórych aplikacjach do rysowania linii używana jest metoda canvas. Czy można włączyć tę metodę na płótnie w Androidzie zamiast adnotacji ?. Celem będzie posiadanie tych samych funkcji, które mają adnotacje.
  • Na poniższym obrazku (RepliGo PDF Reader) jakiego rodzaju kodu używali do adnotacji? enter image description here
+8

@yadab: Muszę tylko wyobrażenie o adnotacji, płótno i iText czy może on być używany, czy nie. Zanim zaczniesz komentować lub odpowiadać, najpierw przeczytaj i spróbuj zrozumieć pytanie. – BobDroid

+1

Oddzwonię do mojego komentarza. – yadab

+1

http://developer.android.com/guide/topics/ui/custom-components.html#custom – zapl

Odpowiedz

6

Twoje pytanie wydaje się, jakie są sposoby, aby umożliwić użytkownikom dodawanie adnotacji na plik PDF w Android/JAVA, więc tutaj jest jedna metoda dla ciebie, chociaż może nie być najlepszym rozwiązaniem.

Chciałbym zaznaczyć, że tak naprawdę nie jest konieczne edytowanie rzeczywistego pliku PDF tylko po to, aby umożliwić użytkownikom dodawanie i wyświetlanie adnotacji. Twoja aplikacja może po prostu przechowywać dane osobno dla adnotacji, przechowywać te adnotacje dla każdego pliku i ładować je po załadowaniu pliku.

Oznacza to, że nie utworzy on nowego pliku PDF zawierającego te adnotacje, ale zamiast tego będzie przechowywać dane użytkownika dla każdego pliku PDF, który jest załadowany do aplikacji, i wyświetlać go, gdy użytkownik załaduje plik PDF plik ponownie. (Tak więc wygląda na to, że jest opatrzony przypisami).

Przykład:

  1. Przeczytaj tekst pliku PDF, tekst formatowania & obrazy do aplikacji
  2. wyświetlania dokumentu (jak Word Processor)
  3. pozwalają użytkownikowi na edycję & opisywanie dokument
  4. Zapisz zmiany & dane adnotacji w aplikacji (nie plik PDF)
  5. Podczas ponownego ładowania pliku zastosuj zmiany & adnotacje wcześniej zapisane.

Twoja klasa adnotacja może wyglądać mniej więcej tak:

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

Więc jesteś po prostu przechowującą dane adnotacji-wystawie tutaj, a kiedy załadować plik i poszczególnych obiektów (odcinkach) Adnotacje, możesz użyć każdej adnotacji, aby wpłynąć na sposób wyświetlania znaków między dokumentami startPos i endPos.

Chociaż Użyłem int s dla dwóch pozycjach startPos i endPos, można również korzystać z dwóch lub więcej zmiennych w odniesieniu do indeksów tablicy indeksów tabeli bazy danych SQLite, stanowisk char dla prostych dokumentów tekstowych; niezależnie od implementacji, możesz to zmienić, abyś wiedział, od czego zacząć adnotację i gdzie zakończyć adnotację z tym typem AnnotationType.

Można także skonfigurować detektory zmian właściwości, aby po zmianie właściwości adnotacji uruchamiać metody aktualizacji ekranu/widoku.

+0

Czy możesz podać wystarczającą ilość kodu źródłowego tutaj @Ozzy? –

Powiązane problemy