Thu Apr 21, 2022 10:02 pm
I used another simple test based on the available samples where it shows how right alignment in Arabic is messed up.
public static void main(String[] args) {
//create a PdfDocument object
PdfDocument doc = new PdfDocument();
//add a page
PdfPageBase page = doc.getPages().add();
//create a true type font
PdfTrueTypeFont font= new PdfTrueTypeFont(new Font("Times New Roman",Font.PLAIN,15));
//create a brush
PdfSolidBrush brush = new PdfSolidBrush(new PdfRGBColor(Color.black));
//create a PdfStringFormat object, specifying PdfTextAlignment to Left
PdfStringFormat leftAlignment = new PdfStringFormat(PdfTextAlignment.Left);
//draw text at left
page.getCanvas().drawString("test 123", font , brush, 0, 20, leftAlignment);
leftAlignment.setRightToLeft(true);
page.getCanvas().drawString("عربى اسم رقم", font , brush, 0, 40, leftAlignment);
page.getCanvas().drawString("عربى اسم", font , brush, 0, 60, leftAlignment);
page.getCanvas().drawString("عربى", font , brush, 0, 80, leftAlignment);
//draw text at right
PdfStringFormat rightAlignment = new PdfStringFormat(PdfTextAlignment.Right);
page.getCanvas().drawString("test 123", font , brush, page.getCanvas().getClientSize().getWidth(), 20, rightAlignment);
rightAlignment.setRightToLeft(true);
page.getCanvas().drawString("عربى اسم رقم", font , brush, page.getCanvas().getClientSize().getWidth(), 40, rightAlignment);
page.getCanvas().drawString("عربى اسم", font , brush, page.getCanvas().getClientSize().getWidth(), 60, rightAlignment);
page.getCanvas().drawString("عربى", font , brush, page.getCanvas().getClientSize().getWidth(), 80, rightAlignment);
//save the file
doc.saveToFile("C:\\temp\\align.pdf");
doc.close();
}
Login to view the files attached to this post.