Bukankah lebih baik jika model pencitraan Android mengambil inspirasi dari Qt? Qt menetapkan bahwa menghasilkan PDF atau SVG dapat sesederhana mengarahkan ulang kode yang sama yang digunakan untuk menggambar di layar. Lihatlah derivasi QPrinter, QSvgGenerator, dan QWidget dari QPaintDevice untuk polanya.
Calaf
1
Sama di iOS. Pembuatan PDF sudah ada di dalamnya.
Fabian Zeindl
2
Saya percaya Kit Kat memiliki fitur untuk menghasilkan PDF, tetapi saya tidak tahu apakah ini kompatibel dengan mundur. Saya telah memposting opsi di bawah ini dan situs berikut mencantumkan beberapa opsi mulai dari komersial hingga gratis: stefan.fenz.at/creating-pdfs-on-android-an-evaluation
IcedDante
5
Konyol bahwa ini ditutup sebagai "di luar topik".
Joe Coder
2
Mengapa pos ini ditutup? Stackoverflow terlalu pilih-pilih tentang cakupannya; pertanyaan ini memiliki 175.000 tampilan, sebagai sumber pengkodean situs ini harus memungkinkan hal-hal biasa seperti ini, aturan perlu diubah, kita membaca terlalu jauh ke dalam teks literal dari apa yang "di luar topik" daripada inti dari aturan. Saya menandainya untuk membuka kembali, berharap orang lain akan memilih juga.
Albert Renshaw
Jawaban:
155
Jika ada yang ingin menghasilkan PDF di perangkat Android, berikut adalah cara melakukannya:
// open a new documentPrintedPdfDocument document =newPrintedPdfDocument(context,
printAttributes);// start a pagePage page = document.startPage(0);// draw something on the pageView content = getContentView();
content.draw(page.getCanvas());// finish the page
document.finishPage(page);...// add more pages...// write the document content
document.writeTo(getOutputStream());//close the document
document.close();
Trik untuk membuat PDF dengan fitur-fitur kompleks adalah membuat aktivitas tiruan dengan tata letak xml yang diinginkan. Anda kemudian dapat membuka kegiatan boneka ini, mengambil screenshot pemrograman dan mengkonversi gambar yang ke pdf menggunakan library ini . Tentu saja ada batasan seperti tidak dapat menggulir, tidak lebih dari satu halaman, tetapi untuk aplikasi terbatas ini cepat dan mudah. Semoga ini bisa membantu seseorang!
Komentar ini mengarahkan saya ke arah yang benar. Namun: 1. Anda tidak perlu memulai aktivitas untuk mengambil screenshot! Anda bisa saja mengembang tata letak xml pada saat runtime dan mengubahnya menjadi bitmap seperti yang disarankan di sini ; Yang sedang berkata, Anda dapat menghasilkan beberapa halaman dengan tata letak yang berbeda. Gulir tidak didukung seperti yang dikatakan tetapi Anda dapat mengimplementasikan daftar menggunakan, misalnya, tata letak linier.
r.pedrosa
11
Tidak mudah untuk menemukan solusi lengkap dari masalah konversi HTML ke PDF sewenang-wenang dengan huruf non-Inggris di Android. Saya mengujinya untuk huruf unicode Rusia.
Kami menggunakan tiga perpustakaan:
(1) Jsoup (jsoup-1.7.3.jar) untuk konversi dari HTML ke XHTML,
Masalah yang sulit adalah menampilkan huruf Rusia dalam PDF dengan menggunakan pustaka XMLWorker iTextPDF. Untuk ini, kita harus membuat implementasi antarmuka FontProvider kita sendiri:
Terima kasih untuk bagianmu! Saya punya pertanyaan: Bisakah kita menerapkan aturan CSS ke HTML?
Phuong
6
Sedikit terlambat dan saya belum mengujinya sendiri tetapi perpustakaan lain yang berada di bawah lisensi BSD adalah Android PDF Writer .
Pembaruan Saya telah mencoba perpustakaan sendiri. Bekerja ok dengan generasi pdf sederhana (ini menyediakan metode untuk menambahkan teks, garis, persegi panjang, bitmap, font). Satu-satunya masalah adalah bahwa PDF yang dihasilkan disimpan dalam String di memori, ini dapat menyebabkan masalah memori dalam dokumen besar.
Adakah yang bisa memberi tahu saya apa yang tidak bisa dilakukan oleh Android PDF Writer, yang bisa "itext"?
M. Usman Khan
1
Tidak terawat!! Pembaruan Terakhir: 2015-12-14
Mahdi Alkhatib
2
PDFJet menawarkan versi open-source perpustakaan mereka yang harus dapat menangani tugas pembuatan PDF dasar. Ini adalah solusi murni berbasis Java dan dinyatakan kompatibel dengan Android. Ada versi komersial dengan beberapa fitur tambahan yang tampaknya tidak terlalu mahal.
Terlambat, tetapi relevan untuk meminta dan semoga bermanfaat. Jika menggunakan layanan eksternal (seperti yang disarankan dalam balasan oleh CommonsWare) maka Docmosis memiliki layanan cloud yang mungkin membantu - membongkar pemrosesan ke layanan cloud yang melakukan pemrosesan berat. Pendekatan itu ideal dalam beberapa keadaan tetapi tentu saja bergantung pada koneksi internet.
Anda juga dapat menggunakan perpustakaan PoDoFo . Tujuan utamanya adalah bahwa itu diterbitkan di bawah LGPL. Karena ini ditulis dalam C ++ Anda harus mengkompilasi silang menggunakan NDK dan menulis C-side dan Java wrapper. Beberapa perpustakaan pihak ketiga dapat digunakan dari proyek OpenCV . Juga di proyek OpenCV Anda dapat menemukan android.toolchain.cmakefile, yang akan membantu Anda menghasilkan Makefile.
Jawaban:
Jika ada yang ingin menghasilkan PDF di perangkat Android, berikut adalah cara melakukannya:
sumber
Jika Anda mengembangkan untuk perangkat dengan API level 19 atau lebih tinggi, Anda dapat menggunakan built in PrintedPdfDocument: http://developer.android.com/reference/android/print/pdf/PrintedPdfDocument.html
sumber
Trik untuk membuat PDF dengan fitur-fitur kompleks adalah membuat aktivitas tiruan dengan tata letak xml yang diinginkan. Anda kemudian dapat membuka kegiatan boneka ini, mengambil screenshot pemrograman dan mengkonversi gambar yang ke pdf menggunakan library ini . Tentu saja ada batasan seperti tidak dapat menggulir, tidak lebih dari satu halaman, tetapi untuk aplikasi terbatas ini cepat dan mudah. Semoga ini bisa membantu seseorang!
sumber
Tidak mudah untuk menemukan solusi lengkap dari masalah konversi HTML ke PDF sewenang-wenang dengan huruf non-Inggris di Android. Saya mengujinya untuk huruf unicode Rusia.
Kami menggunakan tiga perpustakaan:
(1) Jsoup (jsoup-1.7.3.jar) untuk konversi dari HTML ke XHTML,
(2) iTextPDF (itextpdf-5.5.0.jar),
(3) XMLWorker (xmlworker-5.5.1.jar).
Masalah yang sulit adalah menampilkan huruf Rusia dalam PDF dengan menggunakan pustaka XMLWorker iTextPDF. Untuk ini, kita harus membuat implementasi antarmuka FontProvider kita sendiri:
Di sini kita menggunakan font Android standar Droid Sans, yang terletak di folder sistem:
sumber
Sedikit terlambat dan saya belum mengujinya sendiri tetapi perpustakaan lain yang berada di bawah lisensi BSD adalah Android PDF Writer .
Pembaruan Saya telah mencoba perpustakaan sendiri. Bekerja ok dengan generasi pdf sederhana (ini menyediakan metode untuk menambahkan teks, garis, persegi panjang, bitmap, font). Satu-satunya masalah adalah bahwa PDF yang dihasilkan disimpan dalam String di memori, ini dapat menyebabkan masalah memori dalam dokumen besar.
sumber
PDFJet menawarkan versi open-source perpustakaan mereka yang harus dapat menangani tugas pembuatan PDF dasar. Ini adalah solusi murni berbasis Java dan dinyatakan kompatibel dengan Android. Ada versi komersial dengan beberapa fitur tambahan yang tampaknya tidak terlalu mahal.
sumber
Terlambat, tetapi relevan untuk meminta dan semoga bermanfaat. Jika menggunakan layanan eksternal (seperti yang disarankan dalam balasan oleh CommonsWare) maka Docmosis memiliki layanan cloud yang mungkin membantu - membongkar pemrosesan ke layanan cloud yang melakukan pemrosesan berat. Pendekatan itu ideal dalam beberapa keadaan tetapi tentu saja bergantung pada koneksi internet.
sumber
Anda juga dapat menggunakan perpustakaan PoDoFo . Tujuan utamanya adalah bahwa itu diterbitkan di bawah LGPL. Karena ini ditulis dalam C ++ Anda harus mengkompilasi silang menggunakan NDK dan menulis C-side dan Java wrapper. Beberapa perpustakaan pihak ketiga dapat digunakan dari proyek OpenCV . Juga di proyek OpenCV Anda dapat menemukan
android.toolchain.cmake
file, yang akan membantu Anda menghasilkanMakefile
.sumber