我正在尝试在Android上创建PDF,但仅在按下按钮时显示一些信息,而不是将其存储在手机上。我收到了这个错误:
Unhandled exception: com.itextpdf.text.DocumentException
但我不明白为什么会这样。我有以下代码:
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PdfDocument pdf = new PdfDocument();
PdfWriter pdfWriter = PdfWriter.getInstance(pdf, baos); //Error here
pdf.open();
pdf.add(new Paragraph("Hello world")); //Error here
pdf.close();
byte[] pdfByteArray = baos.toByteArray();
为什么我收到此错误?我错误地使用了itextg库吗?我找不到有关此错误的任何信息。
PS:我可以看到错误与itext
而不是itextg
有关,因此我不知道是否可以使用此事实产生错误。
提前致谢!
答案 0 :(得分:1)
这是错误的:
PdfDocument
在iText 5中,Document
是仅由iText在内部使用的类。您应该使用try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
Document document = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(document, baos); //Error here
document.open();
document.add(new Paragraph("Hello world")); //Error here
document.close();
byte[] pdfByteArray = baos.toByteArray();
}
catch (DocumentException de) {
// handle the exception when something goes wrong on the iText level.
// for instance: you add one element to another element that is incompatible
}
catch (IOException) {
// handle the exception when something goes wrong on the IO level.
// for instance: you try to write to a file in a folder that doesn't exist
}
类来代替。
像这样调整你的代码:
try
在开始自己试验之前,请仔细阅读documentation。您可以在Q& As。{/ p>的Getting Started部分找到Hello World示例
实际问题是由于您没有catch
/ throws
(或IOException
)来处理DocumentException
或{checkbox
{1}}。
您的错误与iText(Java)和iTextG(Android)之间的差异完全无关。您正在使用抛出异常的方法。无论您是使用Java还是Android,都需要处理这些异常。
iText和iTextG之间的差别很小。没有任何理由可以单独使用iText和iTextG文档。