Сгенерировать отчет pdf в java — swing, таблица

#java #report

#java #Сообщить

Вопрос:

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

       DefaultTableModel model = (DefaultTableModel) tabela.getModel();
        String path="";
        JFileChooser j= new JFileChooser();
       j.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
      j.showSaveDialog(this);
          int x=j.showOpenDialog(this);

          if(x==JFileChooser.APPROVE_OPTION){
 path=j.getSelectedFile().getPath();
 }

 Document doc= new Document();
    try {
        PdfWriter.getInstance(doc, new FileOutputStream(path "raport.pdf"));
        doc.open();
        PdfPTable tbl=new PdfPTable(4);
        tbl.addCell("column1");
        tbl.addCell("column2");
        tbl.addCell("column3");
        tbl.addCell("column4");

        for(int i=0; i<table.getRowCount(); i  ){
            String column1=table.getValueAt(i, 0).toString();
            String column2=table.getValueAt(i, 1).toString();
            String column3=table.getValueAt(i, 2).toString();
            String column4=table.getValueAt(i, 3).toString();

            tbl.addCell(column1);
            tbl.addCell(column2);
            tbl.addCell(column3);
            tbl.addCell(column4);
        }
         doc.add(tbl);
    }
    catch (FileNotFoundException ex){
    Logger.getLogger(Energy.class.getName()).log(Level.SEVERE, null, ex);
    } catch (DocumentException ex) {
        Logger.getLogger(Energy.class.getName()).log(Level.SEVERE, null, ex);
    }
  

Комментарии:

1. Какой SDK вы используете для рендеринга PDF-файлов? Какую модель документа вы используете? DOM4J, W3C dom?

2. Я работаю над NetBeans, я хочу сгенерировать его самым простым способом. Любой из этого документа.

3. Отчет сохраняется, но появляется сообщение об ошибке, что pdf поврежден и не может быть открыт.

4. Спасибо, приятель, именно это было doc.close (); 🙂 Кстати, я спрошу вас, как добавить заголовок над таблицей и как добавить другие компоненты из программы, а не из таблицы, таким же образом?

Ответ №1:

не забудьте позвонить doc.close(); , чтобы закрыть поток / завершить сохранение.