2016-08-14 44 views
0
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_pdftest); 
    Button Btgerar = (Button) findViewById(R.id.gerarpdf); 
    Btgerar.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      CriarPDF(); 
     } 
    }); 
} 
public void CriarPDF() { 
    String FILE = Environment.getExternalStorageDirectory().toString() + "/PDF/" + "Ficha.pdf"; 
    EditText txt = (EditText) findViewById(R.id.editText); 
    // Create New Blank Document 
    Document document = new Document(PageSize.A4); 

    // Create Directory in External Storage 
    String root = Environment.getExternalStorageDirectory().toString(); 
    File myDir = new File(root + "/PDF"); 
    myDir.mkdirs(); 

    // Create Pdf Writer for Writting into New Created Document 
    try { 
     PdfWriter.getInstance(document, new FileOutputStream(FILE)); 

    // Open Document for Writting into document 
     document.open(); 
     document.add(new Paragraph(txt.getText().toString())); 


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

    // Close Document after writting all content 
    document.close(); 
    Toast.makeText(this, "PDF File is Created. Location : " + FILE, 
      Toast.LENGTH_LONG).show(); 

    // Create new Page in PDF 
    document.newPage(); 


} 
} 

我已經在Android清單如何在內存中創建PDF文件

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE

,並建立gradle這個版本的聲明是:

compileSdkVersion 24 
buildToolsVersion '24.0.0' 
minSdkVersion 8 
targetSdkVersion 24 

應用程序可以正常運行,但可以」 t創建PDF文件,我找不到。

回答

0

如果我看看你的問題的主題,那麼答案很簡單。您正在使用FileOutputStream在文件系統上創建PDF。在你問的主題中:「如何在內存中創建pdf文件?」這很簡單。 iText接受任何OutputStream,所以答案是:使用ByteArrayOutputStream而不是FileOutputStream

Using iText, generate on memory a PDF that is generated on disk instead

Document document = new Document(); 
ByteArrayOutputStream out = new ByteArrayOutputStream(); 
PdfWriter writer = PdfWriter.getInstance(documento, out); 
(...) 
byte[] pdf = out.getBytes(); 

但是,你爲什麼要在Android設備上在內存中創建PDF?你打算如何處理這些字節?如果您只有byte[],則無法顯示PDF。這是我的回答解釋了這個問題:Display PDF document stored in a ByteArrayOutputStream (not in a file)

您還會注意到以下問題仍然沒有答案(因爲沒有答案):How to visualize a ByteArrayOutputStream as PDF on Android?

你的問題的變化接近尾聲,在那裏你寫的主題: 「應用程序可以正常運行,但不能創建PDF文件,我找不到。」這聽起來好像你不知道如何將PDF寫入Android上的文件系統。這是一個與你在主題中提到的不同的問題。

:之前這個問題已經回答了很多次