2016-03-15 2 views
0

Я хочу напечатать или написать содержимое jtables, чтобы моя jtable содержала персидский контент в PDF или печатайте, чтобы он не отображал информацию о содержимом персидского языка: я использую itext v5. IDE NetBeans 8Я пытаюсь написать jtable в pdf, используя itext в java

Мой код, как следует.

try { 
      Document doc = new Document(PageSize.A4.rotate()); 
      PdfWriter.getInstance(doc, new FileOutputStream("Bill_Report.pdf")); 
      doc.open(); 
      Paragraph co = new Paragraph("Brothers Shadab Co.LTD", FontFactory.getFont(FontFactory.TIMES_BOLD, 24, Font.BOLD, BaseColor.RED)); 
      co.setAlignment(Element.ALIGN_CENTER); 
      doc.add(co); 

      BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\XB Yagut BdIt.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
      Font a = new Font(bf, 28); 
      Paragraph PP = new Paragraph("شرکت تجارتی برادران شاداب لمیتد ", a); 
      PP.setAlignment(Element.ALIGN_CENTER); 
      PdfPTable table = new PdfPTable(1); 
      table.setHorizontalAlignment(Element.ALIGN_CENTER); 
      PdfPCell cell = new PdfPCell(PP); 
      cell.setHorizontalAlignment(Element.ALIGN_CENTER); 
      cell.setBorder(0); 
      table.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
      table.addCell(cell); 
      table.setHeaderRows(1); 
      doc.add(table); 
      Paragraph number = new Paragraph("mobile : 0799550250 - 0799037929 - 0777550250 ", FontFactory.getFont(FontFactory.TIMES_BOLD, 24, Font.BOLD, BaseColor.RED)); 
      number.setAlignment(Element.ALIGN_CENTER); 
      doc.add(number); 

      BaseFont add = BaseFont.createFont("C:\\Windows\\Fonts\\XB Yagut BdIt.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
      Font a_add = new Font(add, 18); 
      Paragraph padd = new Paragraph("مندوی داخل نواب مارکیت دست راست منزل دوم ", a_add); 
      padd.setAlignment(Element.ALIGN_CENTER); 
      padd.setIndentationRight(Element.ALIGN_CENTER); 
      PdfPTable table_add = new PdfPTable(1); 

      PdfPCell cell_add = new PdfPCell(padd); 
      cell_add.setBorder(0); 
      cell_add.setHorizontalAlignment(Element.ALIGN_CENTER); 
      table_add.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
      table_add.addCell(cell_add); 
      doc.add(table_add); 
      table_add.setHorizontalAlignment(Element.ALIGN_CENTER); 

      Image image = Image.getInstance("shadab.png"); 
      image.setAlignment(Element.ALIGN_CENTER); 
      doc.add(image); 
      doc.add(new Paragraph(" bill report", FontFactory.getFont(FontFactory.TIMES_BOLD, 18, Font.BOLD, BaseColor.RED))); 
      doc.add(new Paragraph(" Date : " + new Date().toString())); 

     `enter code here`  doc.add(new Paragraph("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------")); 

      PdfPTable pdfTable = new PdfPTable(jTable1.getColumnCount()); 
      //adding table headers 

      for (int i = 0; i < jTable1.getColumnCount(); i++) { 
       BaseFont t = BaseFont.createFont("C:\\Windows\\Fonts\\XB Yagut BdIt.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
       Font tt = new Font(t, 18); 
       String coll = jTable1.getColumnName(i); 

       pdfTable.addCell(coll); 

      } 
      //extracting data from the JTable and inserting it to PdfPTable 
      for (int rows = 0; rows < jTable1.getRowCount(); rows++) { 
       for (int cols = 0; cols < jTable1.getColumnCount(); cols++) { 
        String result = (jTable1.getModel().getValueAt(rows, cols).toString()); 
        pdfTable.addCell(result); 
**// point my problem is exactly in this place 
/* other code that are in up and down work correctly but jtable content which has persian contents is not displayed */** 

       } 

      } 
      doc.add(pdfTable); 

      BaseFont bffadd = BaseFont.createFont("C:\\Windows\\Fonts\\XB Yagut BdIt.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
      Font ffadd = new Font(bffadd, 18); 
      Paragraph fpadd = new Paragraph("آدرس : سرای سه راهی حسینیه عمومی چنداول اسم سرایدار: حاجی امان و خداداد ", ffadd); 
      fpadd.setAlignment(Element.ALIGN_CENTER); 
      fpadd.setIndentationRight(Element.ALIGN_CENTER); 
      PdfPTable table_footer = new PdfPTable(1); 
      PdfPCell cell_f = new PdfPCell(fpadd); 
      cell_f.setBorder(0); 
      cell_f.setHorizontalAlignment(Element.ALIGN_CENTER); 
      table_footer.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
      table_footer.addCell(cell_f); 
      doc.add(table_footer); 
      table_footer.setHorizontalAlignment(Element.ALIGN_CENTER); 

      BaseFont b1 = BaseFont.createFont("C:\\Windows\\Fonts\\XB Yagut BdIt.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
      Font f1 = new Font(b1, 18); 
      Paragraph p1 = new Paragraph("بعد از 24 ساعت مسولیت بدوش خریدار می باشد ", f1); 
      p1.setAlignment(Element.ALIGN_CENTER); 
      p1.setIndentationRight(Element.ALIGN_CENTER); 
      PdfPTable t1 = new PdfPTable(1); 
      PdfPCell c1 = new PdfPCell(p1); 
      c1.setBorder(0); 
      c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
      t1.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
      t1.addCell(c1); 
      doc.add(t1); 
      t1.setHorizontalAlignment(Element.ALIGN_CENTER); 

      doc.close(); 
      JOptionPane.showMessageDialog(null, "گزارش شما موفقانه ثبت شد "); 

     } catch (DocumentException ex) { 
      Logger.getLogger(Shadab_HomePage.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (FileNotFoundException ex) { 
      Logger.getLogger(Shadab_HomePage.class.getName()).log(Level.SEVERE, null, ex); 
     } catch (IOException ex) { 
      Logger.getLogger(solditems.class.getName()).log(Level.SEVERE, null, ex); 
     } 

ответ

0

Попробуйте использовать персидский текст как объект изображения,

    int w = 400; 
       int h = 150; 

PdfContentByte cb = writer.getDirectContent(); 
PdfTemplate tp = cb.createTemplate(w, h); 
Graphics2D g2 = tp.createGraphicsShapes(w, h);   
g2.drawString("your persian text", 20, 100); 
// put your persian text in place of "your persian text" ,above.    
g2.dispose(); 
cb.addTemplate(tp, 50, 400); 
+0

другой персидский текст проработаны правильно, но когда я распечатать содержимое для JTable это не показывать персидский текст, который мой JTable есть – yasin

+0

для (INT I = 0; i yasin

+0

У меня проблема с этим кодом; – yasin

Смежные вопросы