2016-04-14 120 views
1

我试着学习如何为我的Android应用程序生成PDF。
我遵循官方文档,但代码无法正常工作。
编译器发现我有一些编译错误,但我所做的只是复制/粘贴代码中的代码。
请看看代码,并告诉我,为什么(: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(); 
+1

粘贴错误? – Kathi

+0

您需要将PDF生成代码包装到方法中。 –

+0

@AllanPereira如果我将代码包装到一个方法中,我仍然有这些错误: https://gyazo.com/d83aff5a0a4afddfc7a10ae85973a633 (对不起,我不得不屏幕它,因为错误不是内联..) – Matnako

回答

0
  1. PageInfo.Builder没有考虑你所使用的参数尝试用

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

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

    请查阅 的文件

  2. getContentView()不是从正确的类叫,请here

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

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

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