2016-04-14 89 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