PdfDocument生成PDF,总是产生空文件
利用PdfDocument生成PDF文件,当内容有变化时,就会产生空文件,无论是page.getCanvas().drawText("12345", 20, 50, paint);
还是
view1.draw(canvas);
代码如下:
public void actionGenPdf(View view)
{
// 创建一个PDF文本对象
PdfDocument document=new PdfDocument();
//创建当前页的信息,Builder中的参数表示页面的宽高,以及第几页
PdfDocument.PageInfo pageInfo=new PdfDocument.PageInfo.Builder(595,
843,1).create();
// 生成当前页
PdfDocument.Page
page=document.startPage(pageInfo);
// 在当前页上画画,即把所需要的view的视图画到page的画布上
Paint paint = new Paint();
paint.setColor(Color.BLACK);
paint.setTextSize(20);
Canvas canvas = page.getCanvas();
/*for(int i = 0; i < 10; i++) {
String sTmp = "12345";
page.getCanvas().drawText("12345", 20, 50, paint);
canvas.translate(0, 30);
}*/
TextView view1 = new TextView(this);//getContentView();
view1.layout(0, 0, 200, 200);
view1.setText("Hello");
TextView view2 = new TextView(this);//getContentView();
view2.layout(0, 0, 200, 200);
String sTmp = "Good"+Integer.toString(10);
final String ss = sTmp;
view2.setText(ss);
view1.draw(canvas);
canvas.translate(0, 200);
view2.draw(canvas);
canvas.save();
/*for(int i = 0; i < 10; i++) {
TextView view1 = new
TextView(this);//getContentView();
view1.layout(0, 0, 200, 200);
view1.setText("Hello"+Integer.toString(i));
Toast.makeText(this,"Hello"+Integer.toString(i),
Toast.LENGTH_SHORT).show();
view1.draw(canvas);
// Move the canvas for the next
view.
canvas.save();
canvas.translate(0, 50);
}*/
document.finishPage(page);
// 输出到文件
try {
String filePath = "/sdcard/";
//String filePath =
Environment.getExternalStoragePublicDirectory("").getAbsolutePath();
//String filePath =
Environment.getExternalStorageDirectory().getAbsolutePath();
String fileName = "easy.pdf";
File file = new File(filePath, fileName);
FileOutputStream outputStream = new
FileOutputStream(file);
document.writeTo(outputStream);
PubUtils.notifySystemToScan(this,
filePath + fileName);
Toast.makeText(this, "导出完成",
Toast.LENGTH_SHORT).show();
SoundUtils.getInstance().playSuccess();
} catch (IOException e) {
e.printStackTrace();
Toast.makeText(this,
e.getMessage(), Toast.LENGTH_LONG).show();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现