// create a new document PdfDocument document = new PdfDocument();
// crate a page description PageInfo pageInfo = new PageInfo.Builder(new Rect(0, 0, 100, 100), 1).create();
// start a page Page page = document.startPage(pageInfo);
// draw something on the page View 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();
步骤就是生成页面,然后拿到 canvas ,在页面中画文字画图形,下面演示一下生成图文混排的 pdf 文件。A4 纸文件是 595×842。大概逻辑如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
拿到图文的内容 list 渲染开始: 创建一个新的页面 for item in list: if item is txt: 计算要画的文字高度 if 页面剩下的高度画不完: 计算能画几行,并且 canvas.drawText 能画下的一部分 item 的文字内容置为剩下的部分 创建一个新界面 else canvas.drawText elseif item is image: 计算图片高度 if 页面剩下的高度画不完 && 不是新页面: 创建一个新界面 else canvas.drawImage 渲染结束