Pdf文档 https://developer.android.com/reference/android/graphics/pdf/PdfDocument是一个可以从 Android 视图生成 PDF 的类。您只需添加一个视图即可PdfDocument
然后将 PDF 保存到内存中。
但是,我不想添加已经在屏幕中渲染的视图,因为这样的视图仅适用于智能手机屏幕,而我想为打印机生成 PDF 文档。
因此,我想传递一个View而不渲染。虽然我当然可以这样做,但尺寸和比例如何决定?我如何在 PDF 中控制它?
UPDATE:
根据 clotodex 的以下答案,我做了:
LayoutInflater inflater = getLayoutInflater();
View linearview;
linearview = inflater.inflate(R.layout.printed_order,
findViewById(android.R.id.content),
false);
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(2480, 3508, 0).create();
PdfDocument.Page page = document.startPage(pageInfo);
linearview.draw(page.getCanvas());
document.finishPage(page);
OutputStream outStream;
File file = new File(getExternalFilesDir(null), "pedido.PDF");
try {
outStream = new FileOutputStream(file);
document.writeTo(outStream);
document.close();
outStream.flush();
outStream.close();
但我得到一个空的 PDF。如果我做
View view = findViewById(android.R.id.content);
view.draw(page.getCanvas());
代替
linearview.draw(page.getCanvas());
我得到了我所在的活动,这确认了一切都正确,除了我试图打印的视图之外。
看看这个问题在android中渲染离屏视图 https://stackoverflow.com/questions/7854664/render-view-to-bitmap-off-screen-in-android.
在 Android 中,视图的尺寸由父布局给出。
这意味着您可以使用所需的尺寸创建新的布局,并使用attachToRoot=false
and root=your_new_layout
.
渲染视图后,您现在可以像将渲染视图绘制为 pdf 一样继续操作(按照链接中的说明操作或在绘制到页面画布之前将其转换为位图)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)