【问题标题】:Android create pdf document from webview with multiple pagesAndroid从具有多个页面的webview创建pdf文档
【发布时间】:2015-03-25 02:41:01
【问题描述】:

我正在使用 Android (link) 的 PdfDocument 框架从我的 webview 内容创建一个 pdf 文档。 pdf创建得很好,但它只是一页文档。当 webview 内容很大时,我需要创建一个多页文档。我只需要在页面中拆分 WEBVIEW 内容。我怎样才能做到这一点? 我不想使用 iText 或任何第三方库。

需要帮助。提前致谢。

// create a new document
PdfDocument document = new PdfDocument();

// create a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create();

// start a page
PdfDocument.Page page = document.startPage(pageInfo);

// draw something on the page
View content = myWebview;
content.draw(page.getCanvas());

// finish the page
document.finishPage(page);

FileOutputStream fos;
try {
    fos = new FileOutputStream(fileNameWithPath, false);
    // write the document content
    document.writeTo(fos);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

// close the document
document.close();

【问题讨论】:

  • 您找到解决方案了吗?我也在努力解决。
  • @Annabelle 你找到解决办法了吗?
  • 不幸的是我没有。这个问题对我仍然有效

标签: android pdf webview document multipage


【解决方案1】:

在过去的几天里,我遇到了同样的问题,所以我从 Rakesh Gopathi 找到了这个 answer,它运行良好。我真的推荐任何使用原生 PdfDocument 类的人来检查一下。

【讨论】:

  • 我查过了;它工作正常,但我仍然无法在其中创建多个页面,只能创建单个页面。
  • 它按预期工作。创建了多个页面
【解决方案2】:

如果您想创建多个页面,那么只需为您要在文档中创建的每个页面调用 startPage() 和 finishPage()。
像这样:

// create document
PdfDocument document = new PdfDocument();

// create a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create();

// start 1st page
PdfDocument.Page page = document.startPage(pageInfo);
// draw something on the page
View content = myWebview;
content.draw(page.getCanvas());
// finish 1st page
document.finishPage(page);

// start 2nd page
PdfDocument.Page page = document.startPage(pageInfo);
// draw something on the page
View content = someOtherWebview;
content.draw(page.getCanvas());
// finish 2nd page
document.finishPage(page);

// and so on...

FileOutputStream fos;
try {
    fos = new FileOutputStream(fileNameWithPath, false);
    // write the document content
    document.writeTo(fos);

} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

// close the document
document.close();

【讨论】:

  • 我知道我可以添加更多页面,但是如果内容对于 ISO A4 页面来说太长,我想要将 webview 内容分成多个页面。
  • 好的,我知道你的内容太长了。我看不到您如何截断内容段并将其分布在多个页面上。也许你可以得到你的 webview 的高度并缩放你的画布?
猜你喜欢
  • 1970-01-01
  • 2012-11-16
  • 2015-04-19
  • 1970-01-01
  • 2012-09-06
  • 2022-11-10
  • 2017-07-11
  • 2020-02-17
  • 1970-01-01
相关资源
最近更新 更多