Itext,pdf创建无法打开

时间:2017-09-30 00:47:21

标签: java pdf netbeans itext

我想用Itext创建pdf,一切正常,直到我制作了可运行的jar。 Adobe阅读器显示以下消息:" Adob​​e Reader无法打开xxx.pdf,因为它不是受支持的文件类型,或者因为文件已损坏(例如,它是作为电子邮件附件发送的,并且不是'正确解码)。"这是我的代码:

    String ruta = txtruta.getText();
    Document doc = new Document();

    try {
        FileOutputStream archivo = new FileOutputStream(ruta + ".pdf"); //crear archivo con su ruta

        doc.open();

        PdfPTable tabla = new PdfPTable(8); //creacion de una tabla de 8 columnas

        tabla.addCell("Celda 1");// addCell() agrega una celda a la tabla, el cambio de fila ocurre automaticamente al llenar la fila
        tabla.addCell("Celda 2");
        tabla.addCell("Celda 3");
        tabla.addCell("Celda 4");
        tabla.addCell("Celda 5");
        tabla.addCell("Celda 6");
        tabla.addCell("Celda 7");
        tabla.addCell("Celda 8");// aca se completa una fila

        doc.add(tabla);

        doc.close();

        JOptionPane.showMessageDialog(null, "PDF creado correctamente");

    } catch (Exception e) {
        System.out.println("Error: "+ e);
    }

1 个答案:

答案 0 :(得分:1)

您的代码中缺少一行:

String ruta = txtruta.getText();
Document doc = new Document();

try {
    FileOutputStream archivo = new FileOutputStream(ruta + ".pdf"); //crear archivo con su ruta
    PdfWriter.getInstance(document, archivo);
    doc.open();

    PdfPTable tabla = new PdfPTable(8); //creacion de una tabla de 8 columnas

    tabla.addCell("Celda 1");// addCell() agrega una celda a la tabla, el cambio de fila ocurre automaticamente al llenar la fila
    tabla.addCell("Celda 2");
    tabla.addCell("Celda 3");
    tabla.addCell("Celda 4");
    tabla.addCell("Celda 5");
    tabla.addCell("Celda 6");
    tabla.addCell("Celda 7");
    tabla.addCell("Celda 8");// aca se completa una fila

    doc.add(tabla);

    doc.close();

    JOptionPane.showMessageDialog(null, "PDF creado correctamente");

} catch (Exception e) {
    System.out.println("Error: "+ e);
}
你知道吗?

如果没有PdfWriter.getInstance(document, archivo);您正在创建FileOutputStream,但没有任何内容写入该流。这是一个0字节的文件。