1

itext(lowagie)sdkを使用して、Javaでttfフォントを使用しています。私の問題を例で説明したいと思います。

テキスト(ベンガル語ttf)を表示したいテーブル行があります。テキストは 2 行のはずですが、3 行かかります。問題は、最初の行に 5 つの単語しか表示されておらず、最後に巨大な空白が表示されているため、視覚的には 8 つの単語を簡単に使用できるように見えることです。

私が英語を使えば、そのような問題に直面しないことに注意してください。ベンガル語のユニコードが問題を引き起こしていると思います。問題に関するトレーニングがあれば、それは素晴らしいことです。

例を挙げて問題を再説明します。

Output:

Line1: AAA BBBB CCCC DDDD EEEE <BLANK SPACE BLANK SPACE>ENDOFLINE

Line2: CC DD EE PP QQ RR SS EE <BLANK SPACE BLANK SPACE>ENDOFLINE

Line3: CC DD EE PP QQ RR       <BLANK SPACE BLANK SPACE>ENDOFLINE


Expected:

Line1: AAA BBBB CCCC DDDD EEEE CC DD EE PP  #ENDOFLINE

Line2: QQ RR SS EE CC DD EE PP QQ RR    #ENDOFLINE

ソース モジュール:

fontpath="D://Bangla.ttf";
this.banglaFont = BaseFont.createFont(fontpath,BaseFont.IDENTITY_H,BaseFont.EMBEDDED);



        PdfPTable bTable = new PdfPTable(1);
        bTable.getDefaultCell().setBorder(1);
        bTable.setWidthPercentage(100);
        bTable.addCell(backTableRow1cell(28.5f, 8.8f, CardStr.GOVTNOTE_BNG));




public static PdfPCell backTableRow1cell(float hght, float fontSize, String txt) {
    PdfPCell c1 = new PdfPCell();
    c1.setFixedHeight(hght);
    c1.setHorizontalAlignment(Element.ALIGN_RIGHT);
    ITextUtil.setCellBorder(c1, 0, 0, 1, 0);
    ITextUtil.setCellPadding(c1, 0, 7, 0, 0);
    c1.addElement(TextProcessing.designPar(TextProcessing.getFontStyle(VoterCard.banglaFont, fontSize, Color.BLACK, Font.NORMAL), txt, Element.ALIGN_LEFT, 8, 2));
    return c1;
}
public static Paragraph designPar(Font fnt, String txt, int alignment, int leading, int afterspacing) {
    Paragraph phrs = new Paragraph(txt, fnt);
    phrs.setLeading(leading);
    phrs.setAlignment(alignment);
    return phrs;
}

public static Font getFontStyle(BaseFont baseFont, float size, Color clr, int FontStyle) {
    Font fnt = new Font(baseFont, size);
    fnt.setColor(clr);
    fnt.setStyle(FontStyle);

    return fnt;
}

ここに画像の説明を入力

4

1 に答える 1