【问题标题】:Android PDF generationAndroid PDF 生成
【发布时间】:2016-04-14 15:32:49
【问题描述】:

我尝试学习如何为我的 Android 应用程序生成 PDF。
我遵循了官方文档,但代码不起作用。
编译器发现了一些编译错误,但我所做的只是从代码中复制/粘贴代码。
请看一下代码并告诉我原因(:

 PrintAttributes printAttributes = new PrintAttributes.Builder().
         setMediaSize(PrintAttributes.MediaSize.ISO_A4)
         .setColorMode(PrintAttributes.COLOR_MODE_COLOR)
         .setMinMargins(PrintAttributes.Margins.NO_MARGINS)
         .build();


PrintedPdfDocument document = new PrintedPdfDocument(this, printAttributes);

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}



// crate a page description
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(new Rect(0, 0, 100, 100), 1).create();

// start a page
PdfDocument.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();

【问题讨论】:

  • 您需要将PDF生成代码包装到一个方法中。
  • @AllanPereira 如果我将生成代码包装到一个方法中,我仍然有这些错误:gyazo.com/d83aff5a0a4afddfc7a10ae85973a633(抱歉我不得不筛选它,因为错误不是内联的......)

标签: java android pdf-generation


【解决方案1】:
  1. PageInfo.Builder 不采用您使用的参数。尝试替换

     PdfDocument.PageInfo pageInfo = 
             new PdfDocument.PageInfo.Builder(new Rect(0, 0, 100, 100), 1).create();
    

    PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(100,100,1).create();`
    

    请查看文档 PdfDocument.PageInfo.Builder

  2. getContentView() 没有从正确的类中调用,请检查here

  3. getOutputStream() 不存在 Activity 类。如果您想要将内容复制到文件中,您可能应该创建一个新文件,并将输出复制到该文件。

  4. 您的所有代码都需要包含在一个方法中,然后从onCreate() 方法中调用。

更多关于为Android生成PDF的信息,请查看[此链接]。3

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-16
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2011-04-27
    相关资源
    最近更新 更多