title: Arabic characters from html content to pdf using iText
body: <p>I am having trouble to display the Arabic Characters from HTML Content in PDF Generation as "<strong>?</strong>" </p>
  
  <p>I am able to display the Arabic text from String variable.  At the same time I am not able to generate the Arabic Text from the HTML String.</p>
  
  <p>I want to display the PDF with two column, left side English and the right side Arabic Text. </p>
  
  <p>when I use the following program to convert into pdf.  Please help me in this regard.</p>
  
  <pre><code>try
  {
      Document document = new Document(PageSize.A4, 50, 50, 50, 50);
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      PdfWriter writer = PdfWriter.getInstance(document, out);
      BaseFont bf = BaseFont.createFont("C:\\arial.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
      Font font = new Font(bf, 8);
      document.open();
  
      BufferedReader br = new BufferedReader(new FileReader("C:\\style.css"));
      StringBuffer fileContents = new StringBuffer();
      String line = br.readLine();
      while (line != null)
      {
          fileContents.append(line);
          line = br.readLine();
      }
      br.close();
      String styles = fileContents.toString(); //"p { font-family: Arial;}"; 
  
      Paragraph cirNoEn = null;
      Paragraph cirNoAr = null;
  
      String htmlContentEn = null;
      String htmlContentAr = null;
  
      PdfPCell contentEnCell = new PdfPCell();
      PdfPCell contentArCell = new PdfPCell();
  
      cirNoEn = new Paragraph("Circular No. (" + cirEnNo + ")", new Font(bf, 14, Font.BOLD | Font.UNDERLINE));
      cirNoAr = new Paragraph("رقم التعميم (" + cirArNo + ")", new Font(bf, 14, Font.BOLD | Font.UNDERLINE));
  
      htmlContentEn = “&lt; p &gt;&lt; span &gt; Dear….&lt;/ span &gt;&lt;/ p &gt;”;
      htmlContentAr = “&lt; p &gt;&lt; span &gt; رقم التعميم رقم التعميم &lt;/ p &gt;&lt; p &gt; رقم التعميم ….&lt;/ span &gt;&lt;/ p &gt;”;
      for (Element e : XMLWorkerHelper.parseToElementList(htmlContentEn, styles))
      {
          for (Chunk c : e.getChunks())
          {
              c.setFont(new Font(bf));
          }
          contentEnCell.addElement(e);
      }
      for (Element e : XMLWorkerHelper.parseToElementList(htmlContentAr, styles))
      {
          for (Chunk c:e.getChunks())
          {
              c.setFont(new Font(bf));
          }
          contentArCell.addElement(e);
      }
  
      PdfPCell emptyCell = new PdfPCell();
      PdfPCell cirNoEnCell = new PdfPCell(cirNoEn);
      PdfPCell cirNoArCell = new PdfPCell(cirNoAr);
  
      cirNoEnCell.setHorizontalAlignment(Element.ALIGN_CENTER);
      cirNoArCell.setHorizontalAlignment(Element.ALIGN_CENTER);
  
      emptyCell.setBorder(Rectangle.NO_BORDER);
      emptyCell.setFixedHeight(15);
  
      cirNoEnCell.setBorder(Rectangle.NO_BORDER);
      cirNoArCell.setBorder(Rectangle.NO_BORDER);
      contentEnCell.setBorder(Rectangle.NO_BORDER);
      contentArCell.setBorder(Rectangle.NO_BORDER);
  
      cirNoArCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
      contentArCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
  
      contentEnCell.setNoWrap(false);
      contentArCell.setNoWrap(false);
  
      PdfPTable circularInfoTable = null;
  
      emptyCell.setColspan(2);
      circularInfoTable = new PdfPTable(2);
      circularInfoTable.addCell(cirNoEnCell);
      circularInfoTable.addCell(cirNoArCell);
      circularInfoTable.addCell(emptyCell);
      circularInfoTable.addCell(emptyCell);
      circularInfoTable.addCell(emptyCell);
      circularInfoTable.addCell(contentEnCell);
      circularInfoTable.addCell(contentArCell);
      circularInfoTable.addCell(emptyCell);
  
      circularInfoTable.getDefaultCell().setBorder(PdfPCell.NO_BORDER);
      circularInfoTable.setWidthPercentage(100);
      document.add(circularInfoTable);
  
      document.close();
  
  }
  catch (Exception e)
  {
  
  }
  </code></pre>