Создание pdf файла в eclipse [закрыт]

161
31 марта 2019, 21:40

Я могу создать жар файл который будет создавать пдф. Моя программа должна работать:

  1. ввод данных в Frame1
  2. нажатие на кнопку расчета Frame1
  3. вывод окна Frame3 на котором видны результаты расчета (текст+картинка+кнопка печать)
  4. после нажатия кнопки на Frame3 - "qwe" полжен создаваться пдф на диске Д.

Программа работает правильно в eclipsce, но при экспорте пункт с созданием пдф не работает.

 import java.awt.AWTEventMulticaster; 
 import java.awt.Color; 
 import java.awt.Component; 
 import java.awt.Dimension; 
 import java.awt.Font; 
 import java.awt.FontMetrics; 
 import java.awt.Graphics; 
 import java.awt.event.ActionEvent; 
 import java.awt.event.ActionListener; 
 import java.awt.event.MouseEvent; 
 import java.math.BigDecimal; 
 import java.math.RoundingMode; 
 import javax.swing.ImageIcon; 
 import javax.swing.JComboBox; 
 import javax.swing.JFrame; 
 import javax.swing.JLabel; 
 import javax.swing.JOptionPane; 
 import javax.swing.JScrollPane; 
 import javax.swing.JTable; 
 import javax.swing.JTextField; 
 import javax.swing.ToolTipManager; 
 import javax.swing.UIManager; 
 import javax.swing.UnsupportedLookAndFeelException; 
 import javax.swing.table.DefaultTableCellRenderer; 
 import javax.swing.table.JTableHeader; 
 
 import java.io.File;  
 import java.io.IOException; 
    
 import org.apache.pdfbox.pdmodel.PDDocument;  
 import org.apache.pdfbox.pdmodel.PDPage;  
 import org.apache.pdfbox.pdmodel.PDPageContentStream; 
 import org.apache.pdfbox.pdmodel.common.PDRectangle; 
 import org.apache.pdfbox.pdmodel.font.PDFont; 
 import org.apache.pdfbox.pdmodel.font.PDType0Font; 
  
  
  
 ---  
 some code 
 --- 
     final JFrame Frame3 = new JFrame(); 
     Frame3.setResizable(false); 
     Frame3.setVisible(true); 
     Frame3.setTitle("Расчет"); 
     Frame3.setBackground(new Color(224, 255, 255)); 
     Frame3.getContentPane().setBackground(new Color(240, 250, 255)); 
     Frame3.getContentPane().setFont(new Font("Arial", 0, 16)); 
     Frame3.setSize(raz_x_f, raz_y_f); 
     Frame3.setDefaultCloseOperation(2); 
     Frame3.getContentPane().setLayout(null); 
     Frame3.setLocationRelativeTo(null); 
 
         RoundedButton Button_pdf = new RoundedButton("qwe"); 
         Button_pdf.setBackground(new Color(190, 220, 255)); 
         Button_pdf.setFont(new Font("Arial", 1, 16)); 
         Button_pdf.setBounds(raz_y_f-50, 20, 100, 26); 
         Frame3.getContentPane().add(Button_pdf); 
         Button_pdf.addActionListener(new ActionListener(){ 
         public void actionPerformed(ActionEvent e) {     
        	 press = press + 1; 
        	 try {        	 	    
        		  PDDocument document = new PDDocument(); 
        		  PDPage page = new PDPage(PDRectangle.A4); 
       	      	  document.addPage(page); 
        	        
        	      PDPage page0 = document.getPage(0); 
        	      PDPageContentStream contentStream = new PDPageContentStream(document, page0);      	             	           	        
 
        	      PDFont font = PDType0Font.load( document, new File("src/resources/FreeSans.ttf") ); 
        	      contentStream.setLeading(14.5f); 
        	      contentStream.beginText();    
        	      contentStream.setFont(font, 12); 
 
        	      contentStream.newLineAtOffset(25, 800); 
        	      contentStream.showText("1"); 
        	      contentStream.newLine();  
        	      contentStream.showText("2"); 
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(String.valueOf(Double.parseDouble(textField_1.getText())));  
        	      contentStream.newLine(); 
        	       
        	      contentStream.newLineAtOffset(-200, 00); 
        	      contentStream.showText("3");  
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(String.valueOf(Double.parseDouble(textField_2.getText())));  
        	      contentStream.newLine();        	       
 
        	      contentStream.newLineAtOffset(-200, 00); 
        	      contentStream.showText("4");  
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(String.valueOf(Double.parseDouble(textField_3.getText())));  
        	      contentStream.newLine();        	       
        	       
        	      contentStream.newLineAtOffset(-200, 00); 
        	      contentStream.showText("5");  
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(String.valueOf(L_tr));  
        	      contentStream.newLine(); 
        	       
        	      contentStream.newLineAtOffset(-200, 00); 
        	      contentStream.showText("6");  
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(comboBox_2st);  
        	      contentStream.newLine(); 
        	       
        	      contentStream.newLineAtOffset(-200, 00); 
        	      contentStream.showText("7");  
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(comboBox_3st);  
        	      contentStream.newLine(); 
        	       
        	      contentStream.newLineAtOffset(-200, 00); 
        	      contentStream.showText("8");  
        	      contentStream.newLineAtOffset(200, 00); 
        	      contentStream.showText(comboBox_4st);  
        	      contentStream.newLine(); 
        	      contentStream.newLine(); 
        	       
        	      contentStream.endText(); 
 
        	      contentStream.close(); 
 
        	      document.save("D:/result" + press + ".pdf"); 
        	      document.close(); 
        	      JOptionPane.showMessageDialog(Frame3, "pdf done");      	 			 
        	 	} catch (IOException e1) { 
					e1.printStackTrace(); 
				} 
        }  
        });

Answer 1

Достаточно было добавить стиль текста в корень и изменить путь на : PDFont font = PDType0Font.load( document, new File("FreeSans.ttf") );

READ ALSO
Имитация свайпа по кнопке

Имитация свайпа по кнопке

Допустим, есть некоторая кнопка и при нажатии на нее нужно создать свайп вправоКак реализовать подобное и возможно ли это?

151
Не работает aspect

Не работает aspect

У меня есть метод, который я бы хотел логировать

127
Glide хранение кеша

Glide хранение кеша

В приложения для загрузки изображений используются GlideКак известно Glide кеширует изображения

150
JavaFX проблемы с TableView на различных объектах

JavaFX проблемы с TableView на различных объектах

Есть SplitPane, в которую я вложил TableViewИ появляются некоторые вопросы

122