如何使用 iText 创建波斯语 PDF

问题描述 投票:0回答:3

我知道之前可能很多人问过这个问题。我已经阅读了几乎所有的内容`但它无法帮助我解决我的问题。 我正在使用 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

java pdf netbeans
3个回答
2
投票

Document.add()
不支持 RTL 文本。你必须使用
ColumnText.setRunDirection
PdfPTable.setRunDirection
.


0
投票

我没有使用过波斯语。但是,我认为您的问题出在您使用的字体 (B Lotus.ttf) 上。在大多数情况下,使用已注册的 Unicode 字体可能会解决问题。使用不同的字体重试。

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

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

你会在这里找到一个类似的问题.


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);    
    }
     
}     
© www.soinside.com 2019 - 2024. All rights reserved.