- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想创建 Activity “整页”的 PDF。该 View 包含一个包含许多项目的 RecyclerView。
我可以获取我的 Recyclerview 的完整尺寸,但文件仅绘制当前 View 。这是我的代码:
public void tela (){ // create a new document
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT)
{
PdfDocument document = new PdfDocument();
getScreenshotFromRecyclerView(mRecyclerView);
content = mRecyclerView;
content.setBackgroundColor(Color.parseColor("#303030"));
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(wil,
height, 1).create();
// create a new page from the PageInfo
PdfDocument.Page page = document.startPage(pageInfo);
// repaint the user's text into the page
content.draw(page.getCanvas());
// do final processing of the page
document.finishPage(page);
// saving pdf document to sdcard
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy - HH-mm-ss",Locale.getDefault());
String pdfName = "Revisões_"
+ sdf.format(Calendar.getInstance().getTime()) + ".pdf";
// all created files will be saved at path /sdcard/PDFDemo_AndroidSRC/
File outputFile = new File(Environment.getExternalStorageDirectory().getPath(), pdfName);
try {
outputFile.createNewFile();
OutputStream out = new FileOutputStream(outputFile);
document.writeTo(out);
document.close();
out.close();
Toast.makeText(this,"PDF gerado com sucesso",Toast.LENGTH_SHORT).show();
Log.i("Gerou", "pdf");
} catch (IOException e) {
e.printStackTrace();
}
}
}
//获取限制
public void getScreenshotFromRecyclerView(RecyclerView view) {
RecyclerView.Adapter adapter = view.getAdapter();
if (adapter != null) {
int size = adapter.getItemCount();
for (int i = 0; i < size; i++) {
RecyclerView.ViewHolder holder = adapter.createViewHolder(view, adapter.getItemViewType(i));
adapter.onBindViewHolder(holder, i);
holder.itemView.measure(View.MeasureSpec.makeMeasureSpec(view.getWidth(), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
holder.itemView.layout(0, 0, holder.itemView.getMeasuredWidth(), holder.itemView.getMeasuredHeight());
height += holder.itemView.getMeasuredHeight();
}
wil=view.getMeasuredWidth();
}
}
我可以用我的 Recyclerview 的所有值创建 pdf 吗?
谢谢。
最佳答案
我实现了一个帮助程序类来处理将图像保存为 PDF。在 saveImageToPDF() 方法中,我传递:
为了获取 recyclerView 位图,我使用了这个 Take a screenshot of RecyclerView in FULL length
public class PDFHelper {
private File mFolder;
private File mFile;
private Context mContext;
public PDFHelper(File folder, Context context) {
this.mContext = context;
this.mFolder = folder;
if(!mFolder.exists())
mFolder.mkdirs();
}
public void saveImageToPDF(View title, Bitmap bitmap, String filename) {
mFile = new File(mFolder, filename + ".pdf");
if (!mFile.exists()) {
int height = title.getHeight() + bitmap.getHeight();
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(bitmap.getWidth(), height, 1).create();
PdfDocument.Page page = document.startPage(pageInfo);
Canvas canvas = page.getCanvas();
title.draw(canvas);
canvas.drawBitmap(bitmap, null, new Rect(0, title.getHeight(), bitmap.getWidth(),bitmap.getHeight()), null);
document.finishPage(page);
try {
mFile.createNewFile();
OutputStream out = new FileOutputStream(mFile);
document.writeTo(out);
document.close();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
关于android - 以全长创建 RecyclerView 的 PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38278900/
我想制作一个sidenav,它可以是整个屏幕的长度,也可以是固定的,只滚动屏幕的右侧。不知何故,当右侧的高度大于钢筋的高度时,钢筋突然终止。请参见sidenav not full screen照片和代
这个问题在这里已经有了答案: How do I print a double value with full precision using cout? (17 个答案) 关闭 9 年前。 我有一个
在下面的代码中,我的第一个表行没有拉伸(stretch)到满,这令人沮丧。虽然第二张 table 很好并且可以按预期拉伸(stretch)。有人可以引用我的原因并帮助解决它吗? body {paddi
我正在尝试从中删除一个 URL: http://www.huffingtonpost.com/2013/08/01/edward-snowden-russia_n_3688225.html 为此: h
我有一个网络表单,我的客户希望用户能够打印出来。它可以很好地使用 CSS 进行一些样式设置,但是,我有几个 textaear 字段。如果用户键入的内容超过文本区域的高度,则该类型在打印时会被截断。 我
我想让一条水平线延伸到 Bootstrap 父元素指定的列宽。我正在使用 Bootstrap 4.1.1。代码如下。 Something here!
我是一名优秀的程序员,十分优秀!