2015-04-03 12 views
5

Ho intenzione di utilizzare la libreria pdf di Android integrata. Nella mia app ho bisogno di visualizzare un report in formato pdf che può contenere più pagine. Gli utenti dovrebbero essere in grado di stampare quelle pagine. La stampa con PrintDocumentAdapter sembra piuttosto semplice, ma quello che non mi è chiaro è quale sia il modo migliore per creare il pdf. So che si può generare un PdfDocument con un semplice Vista/tela e o prendere approccio più "basso livello" in cui si disegna le linee, testo, vernici, eccQual è la migliore strategia per la creazione, la visualizzazione e la stampa di documenti PDF in Android

Vedo tre possibilità:

  1. Crea una vista per ogni pagina. L'utente può navigare tra le viste secondo necessità e stampare. Tuttavia non mi è chiaro come generare un pdf per ogni pagina/vista. Ciò che intendo è se sto visualizzando la pagina/vista 1, sì, posso facilmente creare un pdf da questo, ma che dire delle altre pagine? Sì, posso averlo in memoria, ma quello che ho trovato è che se non vengono visualizzati attivamente sullo schermo, creano PDF vuoti. Non voglio che l'utente stampi ogni pagina singolarmente.

  2. Creare i documenti PDF (approccio di basso livello), integrare un lettore PDF e solo visualizzare/stampare il pdf da lì.

  3. Creare una vista per ogni pagina che l'utente può navigare. Quando l'opzione di stampa viene richiamata, generare i documenti PDF di nuovo (approccio di basso livello)

Ovviamente l'opzione 1 è l'approccio preferito, ma io non sono chiare su come posso farlo. Certo, potrei mancare qualcosa qui così ogni aiuto sarebbe apprezzato!

risposta

0

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

Tuttavia, esso è relativo. È davvero questione di quale libreria/framework trovi più conveniente lavorare, perché ognuno di essi offre la stessa funzionalità con i suoi stessi svantaggi. Per esempio, quelli con cui ho lavorato, hanno i seguenti:

  1. iText - è necessario acquistare un licenece per l'uso comircial (vedi What is latest version of itext that is not AGPL?);
  2. quadro Stampa Android - nessun built-in anteprima pdf prima della stampa come lei ha ricordato nel 2 ° oggetto (è possibile utilizzare costruito in PdfRenderer anche se per API 21+; vedere anche Display PDF within app on Android?). Un altro svantaggio è la disturbing system dialogs quando si desideri salvare/stampare "in silenzio" :)

Anche gli Stati che official documentation"è possibile utilizzare qualsiasi libreria di generazione di file PDF per generare un documento PDF e passarlo al Android quadro di stampa per la stampa."

...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...

La ragione di file PDF vuoti quando si mantiene il punto di vista che sono stati lasciati da un utente in memoria è la loro 0-dimensione a causa di non essere laied (vedi Android: PdfDocument generates empty pdf). Lo stesso accadrà se si tenta di gonfiare i punti di vista che non sono stati raggiunti da un utente ancora ... In realtà, non c'è nulla che si possa fare a questo proposito, questo è come funziona Android.

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

In questo caso, suggerisco di creare in anticipo le pagine pdf per ogni visualizzazione di contenuto a cui un utente sta attualmente interagendo, ma assicurati che la vista sia ancora visualizzata quando la disegni su tela. Per le viste attualmente non utilizzate, utilizzare l'approccio di livello basso "". E una volta richiesta la stampa, passare l'output pdf a Android Print Framework.

0

Ci sono alcune librerie di generazione di pdf là fuori. L'Itext è il più semplice da usare ma è ridicolmente costoso. Pdfjet è un altro che ha un prezzo ragionevole. Un rapido google ti fornirà di più ne sono sicuro.

+0

Grazie per le informazioni. Il mio piano è semplicemente utilizzare la libreria integrata con Android. – bmurmistro

Problemi correlati