如何使用iText创建波斯语PDF

时间:2016-01-26 22:34:05

标签: java pdf netbeans

我知道很多人之前可能会问过这个问题。我几乎阅读了所有这些内容,但它无法帮我解决问题。 我正在使用iText java库来生成波斯语PDF。我正在使用以下

如何使用PdfWriter.RUN_DIRECTION_RTL

代码:

String ruta = txtruta.getText();
    String contenido= txtcontenido.getText();
    try {
        FileOutputStream archivo = new FileOutputStream(ruta+".pdf");
        Document doc = new Document(PageSize.A4,50,50,50,50);
          PdfWriter.getInstance(doc, archivo);
          doc.open();
          BaseFont bfComic = BaseFont.createFont("D:\\Font\\B Lotus.ttf", BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
          Font font = new Font(bfComic, 12,Font.NORMAL);
           doc.add(new Paragraph(contenido,font));
       doc.close();
       JOptionPane.showMessageDialog(null,"ok");

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

输出: Problem

3 个答案:

答案 0 :(得分:1)

Document.add()不支持RTL文字。您必须使用ColumnText.setRunDirectionPdfPTable.setRunDirection

答案 1 :(得分:0)

我没有使用过波斯语。但是,我认为您的问题将与您使用的字体( B Lotus.ttf )有关。在大多数情况下使用注册的Unicode字体可以解决问题。请尝试使用其他字体。

您也可以使用以下代码RTL文本短语。

  

PdfPCell pdfCell = new PdfPCell(new Phrase(contenido,myUnicodePersianFont));
  pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);

您会找到similar question here

答案 2 :(得分:0)

我成功了

 private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         

      JFileChooser dlg = new JFileChooser();
               int option = dlg.showSaveDialog(this);
               if(option==JFileChooser.APPROVE_OPTION){
                  File f = dlg.getSelectedFile();
                  txtaddress.setText(f.toString());
               }


}                                        

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {                                         


    String ruta = txtaddress.getText();
    String con= content.getText();
    try {
          FileOutputStream archivo = new FileOutputStream(ruta+".pdf");
          Document doc = new Document(PageSize.A4,50,50,50,50);
          PdfWriter Writer = PdfWriter.getInstance(doc, archivo);
          doc.open();
          LanguageProcessor al = new ArabicLigaturizer();
          Writer.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
          BaseFont bfComic = BaseFont.createFont("D:\\Font\\titr.ttf", BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
          Font font = new Font(bfComic, 12,Font.NORMAL);
          Paragraph p = new Paragraph(al.process(con),font);
          p.setAlignment(Element.ALIGN_RIGHT);
          doc.add(p);
          doc.close();
          JOptionPane.showMessageDialog(null,"Yes");

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




}