Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用iText创建PDF时出错_Java_Android_File_Pdf_Io - Fatal编程技术网

Java 使用iText创建PDF时出错

Java 使用iText创建PDF时出错,java,android,file,pdf,io,Java,Android,File,Pdf,Io,我对Java和Android比较陌生。我已经说过,我正在应用程序中使用iText.jar文件根据用户输入的数据创建PDF。我从一个基本的例子开始,只是想看看它是如何工作和使用的。出于某种原因,我要么得到错误,要么它是只读的,要么它不存在。希望有人在修复时遇到类似的问题。下面是我正在使用的代码。我已经在android清单中添加了权限。我没有包括所有的代码,只是相关的东西。GlobalVars是一个我用来存储所有公共变量的类。另外,我用来帮助调试的toast语句也是我得到这些错误消息的地方 <

我对Java和Android比较陌生。我已经说过,我正在应用程序中使用iText.jar文件根据用户输入的数据创建PDF。我从一个基本的例子开始,只是想看看它是如何工作和使用的。出于某种原因,我要么得到错误,要么它是只读的,要么它不存在。希望有人在修复时遇到类似的问题。下面是我正在使用的代码。我已经在android清单中添加了权限。我没有包括所有的代码,只是相关的东西。GlobalVars是一个我用来存储所有公共变量的类。另外,我用来帮助调试的toast语句也是我得到这些错误消息的地方

<public static final File location =     Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);>

<try {
        createPdf();
    } catch (FileNotFoundException | DocumentException e) {
        e.printStackTrace();
        errorString = e.getMessage();
        Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_LONG).show();
    }>

<public void createPdf() throws FileNotFoundException, DocumentException {
    FileOutputStream pdfFile = new FileOutputStream(location.getAbsolutePath() + "/temp.pdf");
    // step 1
    Document document = new Document();
    // step 2
    PdfWriter.getInstance(document, pdfFile);
    // step 3
    document.open();
    // step 4
    document.add(createDataTable());
    // step 5
    document.close();
}

public static PdfPTable createDataTable() {
    // a table with two columns
    PdfPTable table = new PdfPTable(4);
    // the cell object
    PdfPCell cell;
    // we add the cells with table.addCell()

    for (int x = 0; x < 40; x++) {
        cell = new PdfPCell(Phrase.getInstance(x + ": " + GlobalVars.inspectionResults[x]));
        table.addCell(cell);
    }
    return table;
}>

以下是Logcat错误:

10-29 01:08:56.730 2283-2340/com.abc.aeivehicleinspection E/表面:getSlotFromBufferLocked:未知缓冲区:0xb3fd33b0


10-29 01:09:02.722 2283-2340/com.abc.aeivehicleinspection E/Surface:getSlotFromBufferLocked:unknown buffer:0xabac8a40

为什么不发布堆栈跟踪?由于某些原因,我在尝试运行调试时没有得到任何信息。我为我的无知道歉,但我对这些程序还不熟悉,而且还在逐渐习惯。我有很多编程知识,但仍在努力学习这些……如果你得到一杯酒,就会有一个例外(除非它来自程序的另一部分)。您正确地记录了异常的堆栈跟踪,因此它将显示在logcat中。获取logcat并发布堆栈跟踪。我无法获取logcat,我不知道为什么。但是,我将错误保存在字符串中,并将其放在应用程序末尾的文本视图中以显示错误。下面是它所说的:“/storage/17F3-3B1C/Download/temp.pdf:open failed:enoint(没有这样的文件或目录。我尝试过只使用一个文件名,这正是示例所显示的: