Ошибка, открыв файл. Фалла Пдфптабле iText - JAVA

Я реализую печать в PDF благодаря классу iText. У меня есть реализованная консультация, которая показывает мне данные клиентов моей базы данных, консультация функционирует как в SQL, так и в командах. Он печатает мне данные в PDF правильно, но сейчас я хочу добавить эти данные к таблице, где мы увидим имена, фамилии, dni, tlf, адрес, город, электронную почту каждого клиента.

Я реализую следующий код, чтобы вводить таблицу, но открыв документ PDF (мне это производит правильно NetBeans) он говорит мне: "ошибка, открыв документ."

Код: public class PDF_Clientes_Tabla {//Маршрут файла внутри проекта Netbeans. public static String сохранил в архиве = System.getProperty ("user.dir") + "/listado_clientes_tabla.pdf";

public static void crearPDF(ArrayList<Cliente> clientes) throws DocumentException{
    //Declaramos un documento como un objecto Document. 
    Document documento = new Document(PageSize.LETTER, 80, 80, 75, 75);
    //writer es declarado como el método utilizado para escribir en el archivo.
    PdfWriter writer = null;

    try{
        //Obtenemos la instancia del archivo a utilizar.
        writer = PdfWriter.getInstance(documento, new FileOutputStream(archivo));
    }catch(FileNotFoundException | DocumentException ex){
        ex.getMessage();
    }

    //Agregamos un título al documento.
    documento.addTitle("ARCHIVO PDF GENERADO DESDE JAVA");

    //Abrimos el documento a editar.
    documento.open();

    try{
        //Obtenemos la instancia de la imagen/logo.
        Image imagen = Image.getInstance("..\\imagenes\\LOGO.png");
        //Alineamos la imagen al centro del documento.
        imagen.setAlignment(Image.ALIGN_CENTER);
        //Agregamos la imagen al documento.
        documento.add(imagen);
    }catch(IOException | DocumentException ex){
        ex.getMessage();
    }

    //Creamos un párrafo nuevo llamado "vacio1" para espaciar los elementos.
    Paragraph vacio1 = new Paragraph();
    vacio1.add("\n\n");
    documento.add(vacio1);

    //Declaramos un texto llamado "titulo" como Paragraph. 
    //Le podemos dar formato alineado, tamaño, color, etc.
    Paragraph titulo = new Paragraph();
    titulo.setAlignment(Paragraph.ALIGN_CENTER);
    titulo.setFont(FontFactory.getFont("Times New Roman", 24, Font.BOLD, BaseColor.RED));
    titulo.add("***LISTADO DE CLIENTES***");

    try{
        //Agregamos el texto "titulo" al documento.
        documento.add(titulo);
    }catch(DocumentException ex){
        ex.getMessage();
    }

    //Creamos un párrafo nuevo llamado "saltolinea1" simulando un salto de linea para espaciar
    //los elementos del PDF.
    Paragraph saltolinea1 = new Paragraph();
    saltolinea1.add("\n\n");
    documento.add(saltolinea1);

    //Variable con el numero de clientes que hay en la tabla clientes.
    int numero_clientes = ConexionesPDFTabla.numero_clientes();
    //Añadimos una tabla de 7 columnas.
    PdfPTable tabla = new PdfPTable(7);
    //Añadimos los títulos a la tabla.
    tabla.addCell("NOMBRE"); 
    tabla.addCell("APELLIDOS"); 
    tabla.addCell("DNI"); 
    tabla.addCell("TLF_CONTACTO"); 
    tabla.addCell("DIRECCION"); 
    tabla.addCell("CIUDAD"); 
    tabla.addCell("EMAIL"); 

    //Recorremos cada arrayList e imprimimos los resultados. 
    for (int i = 0; i < numero_clientes; i++){ 
    tabla.addCell("NOMBRE"); 
    tabla.addCell("APELLIDOS"); 
    tabla.addCell("DNI"); 
    tabla.addCell("TLF_CONTACTO"); 
    tabla.addCell("DIRECCION"); 
    tabla.addCell("CIUDAD"); 
    tabla.addCell("EMAIL"); 
    }

    //Añadimos la tabla "tabla" al documento "documento".
    documento.add(tabla);   
    //Cerramos el documento.
    documento.close();
    //Cerramos el writer.
    writer.close();
}

}

Данные - "enfarragosos", но это, чтобы тестировать простую таблицу, но все же оно я даже не функционирует, открыв файл.

0
задан 27.12.2016, 19:40
0 ответов

Ты добавляешь в таблицу 7 колонн, toString целого клиента, ты это был бы должен делать нечто похожее:

int numero_clientes = ConexionesPDFTabla.numero_clientes();
PdfPTable tabla = new PdfPTable(7);
// Aqui puedes añadir una fila con los titulos
//tabla.addCell("Nombre");
//tabla.addCell("DNI");
//Y asi los 7 campos
for (int i = 0; i < numero_clientes; i++){

    tabla.addCell(clientes.get(i).getNombre());
    tabla.addCell(clientes.get(i).getApellidos());
    //Y asi los 7 campos
}
documento.add(tabla);

Если ты хочешь ценные бумаги в полужирном шрифте, я помещаю один из примера тебе.

Paragraph cabecera=new Paragraph("Nombre");
cabecera.getFont().setStyle(Font.BOLD);
Cell cell=new Cell(cabecera);
table.addCell(cell);

EDIT как ты получаешь клиенты:

for (int i = 0; i < numero_clientes; i++){
        String[] cliente=clientes.get(i).split(" ");
        tabla.addCell(cliente[0]);
        tabla.addCell(cliente[1]);
        //Y asi los 7 campos
    }
1
ответ дан 03.12.2019, 17:59
  • 1
    он дает мне ошибку в " clientes.get (i) .getNombre () " –  27.12.2016, 15:05
  • 2
    Как - твой класс клиент? –  27.12.2016, 15:11
  • 3
    У меня нет класса клиент... ahí проблема. ¿ Я должен создавать ее или он не стоит с полями, оказавшимися вовлеченными в консультацию SQL? –  27.12.2016, 15:11
  • 4
    Cuá l - возврат clientes.get (i)? –  27.12.2016, 15:14
  • 5
    Меня возвращает весь arrayList... –  27.12.2016, 15:14