我打算使用内置的android pdf库。在我的应用程序中,我需要显示一个可能包含多个页面的pdf报告。用户应该能够打印这些页面。使用PrintDocumentAdapter进行打印看起来非常简单,但对我来说不清楚的是创建pdf的最佳方法是什么。我知道你可以只使用View / canvas生成一个PdfDocument,或者采取更多"低级"绘制线条,文字,颜料等的方法
我看到三种可能性:
为每个页面创建一个视图。用户可以根据需要在视图之间导航并进行打印。但是我不清楚如何为每个页面/视图生成pdf。我的意思是,如果我正在查看页面/视图1,是的,我可以轻松地创建一个pdf,但其他页面呢?是的,我可以记住这一点,但我发现,如果他们没有积极地在屏幕上显示,他们会创建空的pdf。我不想让用户单独打印每个页面。
创建pdf文档(低级方法),集成pdf阅读器并从那里显示/打印pdf。
为用户可以浏览的每个页面创建一个视图。调用print选项时,再次生成pdf文档(低级方法)
显然,选项1是首选方法,但我不知道如何做到这一点。当然,我可能会在这里遗漏一些东西,所以任何帮助都会受到赞赏!
答案 0 :(得分:2)
Android没有内置pdf生成库,但在API 19 android中提供了api https://developer.android.com/reference/android/graphics/pdf/PdfDocument.html
但正如@Ivan Wooll所说,如果你想使用,itext是一个不错的pdf生成库。
答案 1 :(得分:0)
那里有一些pdf生成库。 Itext是最简单的使用,但它的价格非常昂贵。 Pdfjet是另一个价格合理的产品。快速谷歌将为您提供更多我确定。
答案 2 :(得分:0)
<强> ...but what's unclear to me is what is the best way to create the pdf...
强>
然而,这是相对的。这真的是你找到哪些库/框架更方便使用的问题,因为它们中的每一个都提供退出相同的功能,但有其自身的缺点。例如,与我合作过的人有以下几个:
即使是disturbing system dialogs状态&#34;您可以使用任何PDF生成库生成PDF文档并将其传递到Android打印框架进行打印。&#34;
<强> ...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维,因为没有被绑定(参见official documentation)。如果你试图夸大用户尚未达到的观点,也会发生同样的事情......事实上,你无能为力,这就是Android
的工作方式。
<强> I don't want to have the user print each page individually.
强>
在这种情况下,我建议您为用户当前正在与之交互的每个内容视图预先创建pdf
页面,只需确保在画布上绘制时视图仍然存在。对于目前没有使用的视图,请使用&#34;低级方法&#34; 。请求打印后,将输出pdf
传递给Android Print Framework
。