- Nhiều ứng dụng như RepliGo, Aldiko, Mantano, ezPdf trong thị trường Android làm cho loại chú thích này trong trình xem pdf của chúng được hiển thị trong hình bên dưới.
- Tôi đã thử nhiều cách để thực hiện chú thích này nhưng tôi đã thất bại. Tôi có một trình xem pdf cho android và mã java riêng biệt cho chú thích bằng cách sử dụng iText để vẽ đường.
- Câu hỏi của tôi là tôi có thể triển khai iText trong Android. Nếu có thể, tôi phải nhập gói nào?
- Cũng trong một số ứng dụng, phương thức canvas được sử dụng để vẽ đường kẻ. Có thể bao gồm phương thức canvas này trong android thay vì sử dụng chú thích không ?. Mục tiêu sẽ là có cùng các tính năng mà chú thích có.
- Trong hình ảnh dưới đây (RepliGo PDF Reader) loại mã nào họ đã sử dụng cho chú thích?
Trả lời
Câu hỏi của bạn có vẻ là những gì phương pháp để cho phép người dùng chú thích trên một tập tin PDF trong android/java, vì vậy đây là một phương pháp cho bạn, mặc dù nó có thể không phải là giải pháp tốt nhất.
Tôi muốn chỉ ra rằng thực sự không cần thiết phải chỉnh sửa tệp PDF thực sự chỉ để cho phép người dùng thêm và xem chú thích. Ứng dụng của bạn chỉ có thể lưu trữ dữ liệu cho chú thích một cách riêng biệt, lưu trữ các chú thích đó cho từng tệp và tải chúng khi tệp được tải.
Điều đó có nghĩa là nó sẽ không tạo tệp PDF mới với các chú thích được đặt, nhưng thay vào đó, nó sẽ lưu trữ dữ liệu người dùng cho mỗi tệp PDF được tải vào ứng dụng của bạn và hiển thị khi người dùng tải tệp PDF lại. (Vì vậy, nó xuất hiện để được chú thích).
Ví dụ:
- đọc văn bản tập tin PDF, text-định dạng & hình ảnh vào ứng dụng của bạn
- hiển thị một tài liệu (như một từ bộ xử lý)
- Cho phép người dùng chỉnh sửa & chú thích tài liệu
- Lưu thay đổi & chú thích-dữ liệu trong ứng dụng của bạn (không phải tệp PDF)
- Khi tải lại tệp, áp dụng thay đổi & chú thích được lưu trữ trước đó.
lớp chú thích của bạn có thể trông giống như thế này:
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;
}
Vì vậy, bạn chỉ cần lưu trữ các dữ liệu chú thích hiển thị ở đây, và khi bạn tải các tập tin và (serialized) đối tượng chú thích tương ứng của nó, bạn có thể sử dụng từng chú thích để ảnh hưởng đến cách bạn hiển thị các ký tự giữa các số startPos
và endPos
trong tài liệu của mình.
Mặc dù tôi đã sử dụng int
s cho hai vị trí startPos
và endPos
, bạn cũng có thể sử dụng hai hay nhiều biến để đề cập đến chỉ số mảng, chỉ số bảng cơ sở dữ liệu SQLite, vị trí char cho các tài liệu văn bản đơn giản; bất kể việc triển khai của bạn là gì, bạn chỉ có thể thay đổi điều đó để bạn biết bắt đầu chú thích ở đâu và ở đâu để kết thúc chú thích với AnnotationType đó.
Ngoài ra, bạn có thể thiết lập trình nghe thay đổi thuộc tính để khi thuộc tính chú thích được thay đổi, chúng kích hoạt các phương pháp để cập nhật hiển thị/chế độ xem của bạn.
u có thể vui lòng đủ mã nguồn ở đây @Ozzy? –
Pdf-chú thích là một mã nguồn mở và điểm tốt để bắt đầu với https://code.google.com/p/pdf-annotation/
- 1. tạo văn bản gạch ngang trong Android?
- 2. markdown - tôi có thể có dấu gạch dưới w/o thoát chúng và không có dấu gạch ngang đánh dấu?
- 3. Tại sao PIP chuyển đổi dấu gạch dưới thành dấu gạch ngang
- 4. Cufon: Gạch dưới văn bản
- 5. Regex để phù hợp với ký tự chữ, dấu gạch dưới, dấu chấm và dấu gạch ngang, cho phép dấu chấm và dấu gạch ngang chỉ ở giữa
- 6. Có thể gạch dưới các từ trong văn bản TextView
- 7. javascript - thay thế dấu gạch ngang (dấu gạch ngang) bằng dấu cách
- 8. Đặt tên cho thuộc tính HTML "lớp" và "id" - dấu gạch ngang và gạch dưới
- 9. Cách di chuyển tập lệnh từ dấu gạch ngang sang dấu gạch ngang?
- 10. Chữ cái Regex, số, dấu gạch ngang và dấu gạch dưới
- 11. Văn bản được gạch dưới CSS có gạch dưới có trọng lượng thấp hơn văn bản?
- 12. RewriteRule^- [L] AKA RewriteRule dấu gạch ngang dấu gạch ngang L
- 13. Biến tần Rails thích hợp của dấu gạch dưới 'gạch dưới'?
- 14. C# Regex cho số và dấu gạch ngang chỉ
- 15. Dấu gạch ngang là gì?
- 16. Tại sao "_" (gạch dưới) khớp "-" (dấu nối)?
- 17. Dấu gạch ngang vs Dash: Thay thế Dash với Dấu gạch ngang
- 18. Sử dụng chữ hoa, dấu gạch ngang hoặc dấu gạch dưới khi đặt tên cho bộ chọn css
- 19. Python Mô-đun với một dấu gạch ngang, hoặc dấu gạch ngang (-) trong tên của nó
- 20. Trong Sublime Text 2, hãy xem dấu gạch ngang như một phần của từ
- 21. Vẽ đường gạch ngang trên Canvas
- 22. Gạch dưới templating - thay đổi mã vạch đánh dấu
- 23. Làm cách nào để gạch dưới văn bản trong reStructuredText?
- 24. emacs: đánh dấu dòng hiện tại bằng gạch dưới nó
- 25. Làm thế nào để tạo gạch chân kép, gạch chân chấm cho văn bản trong css
- 26. Ký tự gạch ngang lạ trong PHP
- 27. Tại sao DisplayFormat có thay đổi DataFormatString "/" (dấu gạch chéo) thành "-" (dấu gạch ngang)?
- 28. Python: phân tách trên dấu cách hoặc dấu gạch ngang?
- 29. Xóa một dấu gạch ngang dài khỏi chuỗi trong JavaScript?
- 30. Macro được đề xuất để thêm chức năng vào hàm tạo dấu gạch ngang của Clojure?
@yadab: Tôi chỉ cần một ý tưởng về chú thích, vải và iText dù nó có thể được sử dụng hay không. Trước khi bình luận hoặc trả lời lần đầu đọc và cố gắng hiểu câu hỏi. – BobDroid
Tôi đang gọi lại nhận xét của mình. – yadab
http://developer.android.com/guide/topics/ui/custom-components.html#custom – zapl