@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 manifest中声明了
uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE
和build gradle版本是:
compileSdkVersion 24
buildToolsVersion '24.0.0'
minSdkVersion 8
targetSdkVersion 24
应用程序可以正常运行,但无法创建pdf文件,我找不到。
答案 0 :(得分: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文件而且我无法找到。"这听起来好像你不知道如何在Android上的文件系统中编写PDF。这与您在主题中提到的问题不同。这个问题之前已经回答了很多次: