2015-04-03 2 views
5

Я планирую использовать встроенную библиотеку PDF для Android. В моем приложении мне нужно отобразить отчет в формате pdf, который может состоять из нескольких страниц. Пользователи должны иметь возможность печатать эти страницы. Печать с помощью PrintDocumentAdapter кажется довольно простой, но для меня непонятно, каков наилучший способ создания pdf. Я знаю, что вы можете создать PdfDocument с просто с видом/холстом и или принять более «низкий уровень» подход, при котором вы рисуете линии, текст, краску и т.п.Какова наилучшая стратегия для создания, отображения и печати PDF-документов в android.

Я вижу три возможности:

  1. Создайте представление для каждой страницы. Пользователь может перемещаться между представлениями по мере необходимости и печатать. Однако мне непонятно, как создать pdf-файл для каждой страницы/вида. Я имею в виду, что если я просматриваю страницу/просмотр 1, да, я могу легко создать pdf-файл, но как насчет других страниц? Да, я могу иметь это в памяти, но я обнаружил, что если они не отображаются на экране, они создают пустые PDF-файлы. Я не хочу, чтобы пользователь печатал каждую страницу по отдельности.

  2. Создайте pdf-документы (низкоуровневый подход), интегрируйте PDF-ридер и просто отобразите/распечатайте pdf-файл оттуда.

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

Очевидно вариант 1 является предпочтительным подходом, но я не ясно, о том, как я могу сделать это. Конечно, я мог бы пропустить что-то здесь, поэтому любая помощь была бы оценена!

ответ

0

...but what's unclear to me is what is the best way to create the pdf...

Тем не менее, она относительна. Речь идет о том, с какой библиотекой/каркасом вы находите более удобным для работы, потому что каждый из них предлагает отказаться от той же функциональности с ее собственными недостатками. Так, например, те, которые я работал, имеют следующие из них:

  1. IText - вы должны купить licenece для comircial использования (см What is latest version of itext that is not AGPL?); не
  2. печати Рамки для Android - нет встроенного Pdf предварительного просмотра перед печатью, как вы упомянули в 2-ом пункте (вы можете использовать встроенный в PdfRenderer, хотя для API 21+; также см Display PDF within app on Android?). Другим недостатком является disturbing system dialogs, когда вы хотите сохранить/печатать «молча» :)

Даже official documentation утверждает, что «Вы можете использовать любую библиотеку генерации PDF для создания PDF-документ и передать его на Android печать рамки для печати."

...Yes I can have this in memory, but what I've found is if they aren't actively being displayed on screen, they create empty pdfs...

Причина пустых PDFs когда вы держите представления, которые были оставлены пользователем в памяти их 0-измерение из-за не скручиваться (см Android: PdfDocument generates empty pdf). то же самое произойдет, если вы пытаетесь раздуть мнения, которые не были достигнуты пользователем еще ... на самом деле, нет ничего, что вы можете сделать по этому поводу, это то, как Android работает.

I don't want to have the user print each page individually.

В этом случае я предлагаю вам заранее создать страницы pdf для каждого контента, с которым пользователь взаимодействует, просто убедитесь, что вид все еще выставляется при рисовании на холсте. Для просмотров, которые в настоящее время не используются, используйте «низкоуровневый подход». И как только печать запросит, пропустите вывод pdf в Android Print Framework.

0

Есть несколько библиотек для создания PDF-файлов. Itext является самым простым в использовании, но это смехотворно дорого. Pdfjet - это еще одна цена по разумным ценам. Быстрый Google предоставит вам больше, я уверен.

+0

Благодарим за информацию. Мой план - просто использовать встроенную библиотеку с Android. – bmurmistro

2

Android не имеет встроенной библиотеки PDF genaration, но в API19 андроида при условии АНИ https://developer.android.com/reference/android/graphics/pdf/PdfDocument.html

Но @Ivan Wooll сказал IText хорошая библиотека поколения PDF, если вы хотите использовать.

+2

скажите причину, почему голосуете ?. Это поможет мне улучшить ситуацию. – Raghavendra