2013-08-09 3 views
2

Я разрабатываю приложение для Android, которое должно помочь пользователям аннотировать файл PDF. Я использую MuPDF для анализа PDF на устройстве Android. Я могу читать PDF, но не могу найти способ, который поможет мне реализовать функции аннотаций для PDF. Я не мог найти ни одного образца ядра, и не мог найти никаких руководств, объясняющих то, что я ищу. У любого есть образец кода, любой другой материал или любые ссылки, которые дадут мне представление о том, как я могу поддерживать простые аннотации (например, нарисуйте прямоугольник или напишите свободно) в файлах PDF.Аннотации pdf с использованием MuPDF на Android

Любая помощь в этом отношении очень ценится.

Заранее спасибо.

+0

Пожалуйста, расскажите нам, что вы имели в виду, прочитав, отображает ли PDF на экране или читает данные в формате PDF, такие как метаданные, текст, изображения и т. Д. –

+0

@SalmanKhakwani: Мне нужно выполнить оба задания, то есть отобразить pdf на экране и читать данные в формате pdf, такие как текст метаданных, изображения и т. д. – Shobhit

ответ

1

Вы хотите сохранить аннотации в файле PDF или отдельно?

Прежний невозможен с помощью muPDF.

Однако, если вы намерены хранить аннотации отдельно, тогда вы могли бы визуализировать PDF на холсте в качестве фона, а затем нарисовать его. Вам все равно придется писать эквивалент приложения для рисования. В образцах Android есть «FingerPaint», а также Android Paint в формате с открытым исходным кодом.

Если вы хотите выделить конкретный текст в PDF, все будет довольно сложно. Вам нужно будет извлечь размеры символов из fitz и управлять курсором в ваших обработчиках касаний. Это не невозможно, но далеко не тривиально.

+0

Спасибо за быстрый ответ. Я могу понять ваш ответ, но я не уверен, как сделать PDF на холсте в качестве фона. FYI: Я использую объект PixmapView ([проверьте эту ссылку] (http://stackoverflow.com/a/8587527/2471621)), у которого есть мой PDF, и это добавлено в файл pdfContainer (RelativeLayout), который отображает его. Я также хочу выделить конкретный текст, и вы могли бы также рассказать мне, что именно вы подразумевали под ** fitz ** здесь? благодаря! – Shobhit

+0

И да, я хочу сохранить аннотации отдельно. – Shobhit

+0

Вам придется расширить PixMapView, чтобы обработать ваш собственный рисунок в этом случае. Fitz - это механизм рендеринга muPDF, и там есть структуры, такие как bb_rect, которые вам нужно получить. – 323go

3

Вы можете нарисовать аннотации, полностью делегируя в библиотеку MuPDF.

Образец приложения, предоставленного мной, включает в себя код для этого.

Метод в родном слое MuPDF поддерживающего это addMarkupAnnotationInternal(int page, PointF[] quadPoints, int type)

Переданный PointF [] определяет прямоугольник, который вы хотите, чтобы комментировать. Вероятно, это произойдет из текста, который пользователь выбрал.

Если вы используете Java обертки, которые они предоставляют, com.artifex.mupdfdemo.MuPDFCore.java, они обеспечивают метод под названием:

MuPDFCore#addMarkupAnnotation(int page, PointF[] quadPoints, Annotation.Type type) 

Чтобы увидеть, как это на самом деле сделано и как MuPDFCore # addMarkupAnnotation получает квадранты от выбора пользователя, попробуйте пример приложения при чтении кода.

В принципе, для добавления аннотаций вам необходимо:

1- предоставить список точек (каре), определяющий форму и страницу выделенной области. 2-делегат в библиотеке MuPDF с использованием вышеупомянутого метода для добавления аннотации к документу и его рендеринга.

Для первого шага вы, вероятно, захотите, чтобы пользователь выделил область документа для выделения.Если да, то вы можете позволить пользователю выбрать, начиная режим выбора с:

MuPDFReaderView#setMode(MuPDFReaderView.Mode.Selecting); 

и когда заканчивается пользователь, получите выделение:

MuPDFView#selectText(); 

Doing все это не так просто, и вам нужно чтобы понять API, поэтому я действительно рекомендую вам прочитать пример кода.

В отношении того, где вы сохраняете аннотации, это еще одна история. Вы можете сохранить их в файле PDF (MuPDF позволяет это сделать), или вы можете хранить их в другом месте, что потребует большего количества кода и будет отделять аннотации из файла PDF.

Итак, вы можете сделать это полностью с помощью MuPDF, нет необходимости рисовать аннотации в качестве другого слоя на Canvas/View с помощью API Android.

+0

Не могли бы вы объяснить, почему мой ответ не работает для вас, и вы его понизили? – GaRRaPeTa

+0

вы можете помочь мне с аннотацией внутри защищенного паролем pdf? Вот ссылка: http://stackoverflow.com/questions/28585742/how-to-save-annotation-on-password-protected-pdf-using-mupdf – Manoj

+0

Можете ли вы указать мне, как показать/скрыть аннотацию для определенной страницы? – Manoj