2017-09-15 2 views
2

아랍어 텍스트로 구성된 셀이있는 테이블을 만들려고합니다. 유감스럽게도 텍스트는 PDF에 표시되지 않습니다.PDF의 테이블에 아랍어 내용 추가

BaseFont arabicBaseFont = BaseFont.createFont("C:\\comittmment\\trado.ttf", BaseFont.IDENTITY_H,true); 
Font arabicFont1 = new Font(arabicBaseFont, 20, Font.BOLD); 
Font arabicFont2 = new Font(arabicBaseFont, 10, Font.NORMAL); 

PdfPTable tableArabic = new PdfPTable(13); 
tableArabic.setWidthPercentage(100); 
tableArabic.setTotalWidth(new float[]{ 47f,35f,35f,35f,35f,35f,35f,35f,35f,35f,35f,35f,35f}); 
tableArabic.setLockedWidth(true); 
tableArabic.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 

PdfPCell cell1_A = new PdfPCell(new Paragraph("الباقه ",arabicFont2)); 
cell1_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell1_A.setNoWrap(true); 
PdfPCell cell3_A = new PdfPCell(new Paragraph("شهر 1",arabicFont2)); 
cell3_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell3_A.setNoWrap(true); 
PdfPCell cell4_A = new PdfPCell(new Paragraph("شهر 2",arabicFont2)); 
cell4_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell4_A.setNoWrap(true); 
PdfPCell cell5_A = new PdfPCell(new Paragraph("شهر 3",arabicFont2)); 
cell5_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell5_A.setNoWrap(true); 
PdfPCell cell6_A = new PdfPCell(new Paragraph("شهر 4",arabicFont2)); 
cell6_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell6_A.setNoWrap(true); 
PdfPCell cell7_A= new PdfPCell(new Paragraph("شهر 5",arabicFont2)); 
cell7_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell7_A.setNoWrap(true); 
PdfPCell cell8_A = new PdfPCell(new Paragraph("شهر 6",arabicFont2)); 
cell8_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell8_A.setNoWrap(true); 
PdfPCell cell9_A = new PdfPCell(new Paragraph("شهر 7",arabicFont2)); 
cell9_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell9_A.setNoWrap(true); 
PdfPCell cell10_A = new PdfPCell(new Paragraph("شهر 8",arabicFont2)); 
cell10_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell10_A.setNoWrap(true); 
PdfPCell cell11_A = new PdfPCell(new Paragraph("شهر 9",arabicFont2)); 
cell11_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell11_A.setNoWrap(true); 
PdfPCell cell12_A = new PdfPCell(new Paragraph("شهر 10",arabicFont2)); 
cell12_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell12_A.setNoWrap(true); 
PdfPCell cell13_A= new PdfPCell(new Paragraph("شهر 11",arabicFont2)); 
cell13_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell13_A.setNoWrap(true); 
PdfPCell cell14_A = new PdfPCell(new Paragraph("شهر 12",arabicFont2)); 
cell4_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell14_A.setNoWrap(true); 
PdfPCell cell15_A = new PdfPCell(new Paragraph("باقتي الصغيره ",arabicFont2)); 
cell5_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell15_A.setNoWrap(true); 
PdfPCell cell16_A= new PdfPCell(new Paragraph("18",f1)); 
cell16_A.setNoWrap(true); 
PdfPCell cell17_A = new PdfPCell(new Paragraph("16.5",f1)); 
cell17_A.setNoWrap(true); 
PdfPCell cell18_A = new PdfPCell(new Paragraph("15",f1)); 
cell18_A.setNoWrap(true); 
PdfPCell cell19_A= new PdfPCell(new Paragraph("13.5",f1)); 
cell19_A.setNoWrap(true); 
PdfPCell cell20_A = new PdfPCell(new Paragraph("12",f1)); 
cell20_A.setNoWrap(true); 
PdfPCell cell21_A = new PdfPCell(new Paragraph("10.5",f1)); 
cell21_A.setNoWrap(true); 
PdfPCell cell22_A = new PdfPCell(new Paragraph("9",f1)); 
cell22_A.setNoWrap(true); 
PdfPCell cell23_A= new PdfPCell(new Paragraph("7.5",f1)); 
cell23_A.setNoWrap(true); 
PdfPCell cell24_A = new PdfPCell(new Paragraph("6",f1)); 
cell24_A.setNoWrap(true); 
PdfPCell cell25_A = new PdfPCell(new Paragraph("4.5",f1)); 
cell25_A.setNoWrap(true); 
PdfPCell cell26_A = new PdfPCell(new Paragraph("3",f1)); 
cell26_A.setNoWrap(true); 
PdfPCell cell27_A = new PdfPCell(new Paragraph("1.5",f1)); 
cell27_A.setNoWrap(true); 
PdfPCell cell28_A = new PdfPCell(new Phrase("باقتي المتوسطه ",arabicFont2)); 
cell28_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell28_A.setNoWrap(true); 
PdfPCell cell29_A= new PdfPCell(new Paragraph("38",f1)); 
cell29_A.setNoWrap(true); 
PdfPCell cell30_A= new PdfPCell(new Paragraph("34.8",f1)); 
cell30_A.setNoWrap(true); 
PdfPCell cell31_A= new PdfPCell(new Paragraph("31.7",f1)); 
cell31_A.setNoWrap(true); 
PdfPCell cell32_A= new PdfPCell(new Paragraph("28.5",f1)); 
cell32_A.setNoWrap(true); 
PdfPCell cell33_A= new PdfPCell(new Paragraph("25.3",f1)); 
cell33_A.setNoWrap(true); 
PdfPCell cell34_A= new PdfPCell(new Paragraph("22.2",f1)); 
cell34_A.setNoWrap(true); 
PdfPCell cell35_A= new PdfPCell(new Paragraph("19.0",f1)); 
cell35_A.setNoWrap(true); 
PdfPCell cell37_A= new PdfPCell(new Paragraph("15.8",f1)); 
cell37_A.setNoWrap(true); 
PdfPCell cell38_A= new PdfPCell(new Paragraph("12.7",f1)); 
cell38_A.setNoWrap(true); 
PdfPCell cell39_A= new PdfPCell(new Paragraph("9.5",f1)); 
cell39_A.setNoWrap(true); 
PdfPCell cell40_A= new PdfPCell(new Paragraph("6.3",f1)); 
cell40_A.setNoWrap(true); 
PdfPCell cell41_A= new PdfPCell(new Paragraph("3.2",f1)); 
cell41_A.setNoWrap(true); 
PdfPCell cell42_A= new PdfPCell(new Paragraph("باقتي الالكبيره ",arabicFont2)); 
cell42_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell42_A.setNoWrap(true); 
PdfPCell cell43_A= new PdfPCell(new Paragraph("58",f1)); 
cell43_A.setNoWrap(true); 
PdfPCell cell44_A= new PdfPCell(new Paragraph("53.2",f1)); 
cell44_A.setNoWrap(true); 
PdfPCell cell45_A= new PdfPCell(new Paragraph("48.3",f1)); 
cell45_A.setNoWrap(true); 
PdfPCell cell46_A= new PdfPCell(new Paragraph("43.5",f1)); 
cell46_A.setNoWrap(true); 
PdfPCell cell47_A= new PdfPCell(new Paragraph("38.7",f1)); 
cell47_A.setNoWrap(true); 
PdfPCell cell49_A= new PdfPCell(new Paragraph("33.8",f1)); 
cell49_A.setNoWrap(true); 
PdfPCell cell50_A= new PdfPCell(new Paragraph("29.0",f1)); 
cell50_A.setNoWrap(true); 
PdfPCell cell51_A= new PdfPCell(new Paragraph("24.2",f1)); 
cell51_A.setNoWrap(true); 
PdfPCell cell52_A= new PdfPCell(new Paragraph("19.3",f1)); 
cell52_A.setNoWrap(true); 
PdfPCell cell53_A= new PdfPCell(new Paragraph("14.5",f1)); 
cell53_A.setNoWrap(true); 
PdfPCell cell54_A= new PdfPCell(new Paragraph("9.7",f1)); 
cell54_A.setNoWrap(true); 
PdfPCell cell55_A= new PdfPCell(new Paragraph("4.8",f1)); 
cell55_A.setNoWrap(true); 
PdfPCell cell56_A= new PdfPCell(new Paragraph("باقتي الالكبرى ",arabicFont2)); 
cell56_A.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 
cell56_A.setNoWrap(true); 
PdfPCell cell58_A= new PdfPCell(new Paragraph("78",f1)); 
cell58_A.setNoWrap(true); 
PdfPCell cell59_A= new PdfPCell(new Paragraph("71.5",f1)); 
cell59_A.setNoWrap(true); 
PdfPCell cell60_A= new PdfPCell(new Paragraph("65.0",f1)); 
cell60_A.setNoWrap(true); 
PdfPCell cell61_A= new PdfPCell(new Paragraph("58.5",f1)); 
cell61_A.setNoWrap(true); 
    PdfPCell cell62_A= new PdfPCell(new Paragraph("52.0",f1)); 
    cell62_A.setNoWrap(true); 
    PdfPCell cell63_A= new PdfPCell(new Paragraph("45.5",f1)); 
    cell63_A.setNoWrap(true); 
    PdfPCell cell64_A= new PdfPCell(new Paragraph("39.0",f1)); 
    cell64_A.setNoWrap(true); 
    PdfPCell cell65_A= new PdfPCell(new Paragraph("32.5",f1)); 
    cell65_A.setNoWrap(true); 
    PdfPCell cell66_A= new PdfPCell(new Paragraph("26.0",f1)); 
    cell66_A.setNoWrap(true); 
    PdfPCell cell67_A= new PdfPCell(new Paragraph("19.5",f1)); 
    cell67_A.setNoWrap(true); 
    PdfPCell cell68_A= new PdfPCell(new Paragraph("13.0",f1)); 
    cell68_A.setNoWrap(true); 
    PdfPCell cell69_A= new PdfPCell(new Paragraph("6.5",f1)); 
    cell69_A.setNoWrap(true); 


    tableArabic.addCell(cell1_A); 
    tableArabic.addCell(cell3_A); 
    tableArabic.addCell(cell4_A); 
    tableArabic.addCell(cell5_A); 
    tableArabic.addCell(cell6_A); 
    tableArabic.addCell(cell7_A); 
    tableArabic.addCell(cell8_A); 
    tableArabic.addCell(cell9_A); 
    tableArabic.addCell(cell10_A); 
    tableArabic.addCell(cell11_A); 
    tableArabic.addCell(cell12_A); 
    tableArabic.addCell(cell13_A); 
    tableArabic.addCell(cell14_A); 
    tableArabic.addCell(cell15_A); 
    tableArabic.addCell(cell16_A); 
    tableArabic.addCell(cell17_A); 
    tableArabic.addCell(cell18_A); 
    tableArabic.addCell(cell19_A); 
    tableArabic.addCell(cell20_A); 
    tableArabic.addCell(cell21_A); 
    tableArabic.addCell(cell22_A); 
    tableArabic.addCell(cell23_A); 
    tableArabic.addCell(cell24_A); 
    tableArabic.addCell(cell25_A); 
    tableArabic.addCell(cell26_A); 
    tableArabic.addCell(cell27_A); 
    tableArabic.addCell(cell28_A); 
    tableArabic.addCell(cell29_A); 
    tableArabic.addCell(cell30_A); 
    tableArabic.addCell(cell31_A); 
    tableArabic.addCell(cell32_A); 
    tableArabic.addCell(cell33_A); 
    tableArabic.addCell(cell34_A); 
    tableArabic.addCell(cell35_A); 
    tableArabic.addCell(cell37_A); 
    tableArabic.addCell(cell38_A); 
    tableArabic.addCell(cell39_A); 
    tableArabic.addCell(cell40_A); 
    tableArabic.addCell(cell41_A); 
    tableArabic.addCell(cell42_A); 
    tableArabic.addCell(cell43_A); 
    tableArabic.addCell(cell44_A); 
    tableArabic.addCell(cell45_A); 
    tableArabic.addCell(cell46_A); 
    tableArabic.addCell(cell47_A); 

    tableArabic.addCell(cell49_A); 
    tableArabic.addCell(cell50_A); 
    tableArabic.addCell(cell51_A); 
    tableArabic.addCell(cell52_A); 
    tableArabic.addCell(cell53_A); 
    tableArabic.addCell(cell54_A); 
    tableArabic.addCell(cell55_A); 
    tableArabic.addCell(cell56_A); 
    tableArabic.addCell(cell58_A); 
    tableArabic.addCell(cell59_A); 
    tableArabic.addCell(cell60_A); 
    tableArabic.addCell(cell61_A); 
    tableArabic.addCell(cell62_A); 
    tableArabic.addCell(cell63_A); 
    tableArabic.addCell(cell64_A); 
    tableArabic.addCell(cell65_A); 
    tableArabic.addCell(cell66_A); 
    tableArabic.addCell(cell67_A); 
    tableArabic.addCell(cell68_A); 
    tableArabic.addCell(cell69_A); 

    document.add(tableArabic); 

표가 문서에 추가되었지만 내용이 내가 잘못 될 곳을 알려주지 않습니다.

+0

스택 추적을 언급했지만 질문에 스택 추적이 없으므로 해당 부분을 제거했습니다. 스택 추적이 있으면 질문을 업데이트하십시오. –

+0

콘솔에 오류가 등록되지 않았습니다 !! 나는 무엇이 잘못되고 있는지 알지 못한다. – Anshuman

+0

'trado.ttf'를 모른다. 아랍어를 지원하는 NOTO 글꼴 (Google에서 무료 글꼴)로 바꿉니다. 또한 : 서구어가 아닌 텍스트는 소스 코드에서 사용하지 않아야합니다. 코드에서 항상 유니 코드 값을 사용하십시오 (Adam Jaamour의 대답 참조). –

답변

2

이 과거의 대답은 당신을 도울 수 : How to display Arabic in PDF created using iText

이 답변 대신 그렇게 나쁜 관행이기 때문에 직접 코드에서 아랍어 입력하는 usign 유니 코드 값을 의미한다. "\ u0627 \ u0644 \ u0645 \ u0648 \ u0642 \ u0639 \ u0627 \ u0644 \ u0625 \ u0644 \ u0643 \

는 유니 코드 표기법을 사용하면 소스 코드에서 비 서구 텍스트를 사용하지 않을 있는지 확인 u062a \ u0631 \ u0648 \ u0646 \ u064a '로 번역하여 당신이 유니 코드 표기법을 사용하여 수행 할 수있는 방법을 참조하십시오 여기에

this 웹 사이트에서 예제 코드입니다 또한

import java.io.FileOutputStream; 

import com.lowagie.text.Document; 
import com.lowagie.text.PageSize; 
import com.lowagie.text.pdf.PdfContentByte; 
import com.lowagie.text.pdf.PdfWriter; 

public class ArabicTextPDF { 
    public static void main(String[] args) { 
    Document document = new Document(PageSize.A4, 50, 50, 50, 50); 
    try { 
     PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("ArabicTextPDF.pdf")); 
     document.open(); 
     java.awt.Font font = new java.awt.Font("arial", 0, 18); 
     PdfContentByte cb = writer.getDirectContent(); 
     java.awt.Graphics2D g2 = cb.createGraphicsShapes(PageSize.A4.width(), PageSize.A4.height()); 
     g2.setFont(font); 
     g2.drawString("\u0634\u0627\u062f\u062c\u0645\u0647\u0648\u0645\u0646", 100, 100); 
     g2.dispose(); 
     document.close(); 
    } catch (Exception de) { 
     de.printStackTrace(); 
    } 
    } 
} 

, 다른들 arialuni.ttf를 사용하는 해결 방법이 제안 될 수있다 : 당신은 아랍어 문자 모양을 생성 할 수 arialbd.ttf을 가정합니다

. 아는 한 arialuni.ttf 만 아랍어를 지원합니다.

아랍어를 지원

당신은 @Bruno Lowagie 제안으로, 당신은 (Google의 무료 글꼴)을 .ttf 노토 글꼴 파일을 대체 할 수 있도록 최신 Windows 업그레이드가 더 이상 arialuni.ttf와 함께 제공되지 않는 점에 유의해야한다. NOTO 글꼴 here에 대해 자세히 알아볼 수 있습니다.

문제가 해결된다면 알려주십시오. 그렇지 않으면 더 많은 도움을 드리겠습니다.

+1

실제로; 그 접근법이 효과가 입증되었으므로 나는 당신의 답을 upvoted했습니다. 최신 Windows 업그레이드가 더 이상 'arialuni.ttf'와 함께 제공되지 않는다는 사실을 명심하십시오. 그래서 내 의견에 NOTO 글꼴을 사용하도록 제안한 것입니다. –

+0

예, 동의합니다.이 경우 NOTO 글꼴은 'arialuni.ttf' (*는 내가 모르는 경우 더 이상 윈도우에 포함되어 있지 않으므로 더 나은 해결책이 될 수 있습니다. 정보). 귀하의 정보로 내 대답을 업데이트하겠습니다. –