如何改变希伯来字母的方向?

huangapple 未分类评论56阅读模式
英文:

How to change direction of Hebrew letters?

问题

我正在使用 itext 7.1.8 版本,并且我需要在我的文档中保存希伯来文。我在这里找到了一个解决方案链接,但对我不起作用。<br/>
我的代码如下所示:

public class RunItextApp {
    public static void main(String[] args) throws Exception {
        final String filename = "simple.pdf";
        final String hebrew = "שדג";
        final String text = "\u05E9\u05D3\u05D2";

        createSimplePdf(filename, hebrew);
    }

    private static void createSimplePdf(String filename, String text) throws Exception {

        final String path = RunItextApp.class.getResource("/Arial.ttf").getPath();
        final PdfFont font = PdfFontFactory.createFont(path, PdfEncodings.IDENTITY_H, true);
        Style hebrewStyle = new Style()
                .setBaseDirection(BaseDirection.RIGHT_TO_LEFT)
                .setTextAlignment(TextAlignment.RIGHT)
                .setFontSize(14)
                .setFont(font);

        final PdfWriter pdfWriter = new PdfWriter(filename);
        final PdfDocument pdfDocument = new PdfDocument(pdfWriter);
        final Document pdf = new Document(pdfDocument);
        pdf.setBaseDirection(BaseDirection.RIGHT_TO_LEFT);
        pdf.add(
                new Paragraph(text)
                        .setFontScript(Character.UnicodeScript.HEBREW)
                        .addStyle(hebrewStyle)
        );
        pdf.close();
    }
}

为什么这段代码不起作用?
如何设置文本方向?

英文:

I'm using itext 7.1.8 and I need to save Hebrew text in my document. I found this solution here but it doesn't work for me.<br/>
My code looks like the following:

public class RunItextApp {
    public static void main(String[] args) throws Exception {
        final String filename = &quot;simple.pdf&quot;;
        final String hebrew = &quot;שדג&quot;;
        final String text = &quot;\u05E9\u05D3\u05D2&quot;;

        createSimplePdf(filename, hebrew);
    }

    private static void createSimplePdf(String filename, String text) throws Exception {

        final String path = RunItextApp.class.getResource(&quot;/Arial.ttf&quot;).getPath();
        final PdfFont font = PdfFontFactory.createFont(path, PdfEncodings.IDENTITY_H, true);
        Style hebrewStyle = new Style()
                .setBaseDirection(BaseDirection.RIGHT_TO_LEFT)
                .setTextAlignment(TextAlignment.RIGHT)
                .setFontSize(14)
                .setFont(font);

        final PdfWriter pdfWriter = new PdfWriter(filename);
        final PdfDocument pdfDocument = new PdfDocument(pdfWriter);
        final Document pdf = new Document(pdfDocument);
        pdf.setBaseDirection(BaseDirection.RIGHT_TO_LEFT);
        pdf.add(
                new Paragraph(text)
                        .setFontScript(Character.UnicodeScript.HEBREW)
                        .addStyle(hebrewStyle)
        );
        pdf.close();
    }
}

Why this code doesn't work?
How can I set text direction?

答案1

得分: -1

请查看此页面 https://kb.itextpdf.com/home/it5kb/faq/how-to-set-rtl-direction-for-hebrew-when-converting-html-to-pdf。页面中描述了与您所遇到问题相同的情况。我认为关键的技巧在于文本字体。

英文:

Please take a look at this page https://kb.itextpdf.com/home/it5kb/faq/how-to-set-rtl-direction-for-hebrew-when-converting-html-to-pdf. It is described the same problem you have. I think that the main trick is in text font.

huangapple
  • 本文由 发表于 2020年6月5日 20:50:13
  • 转载请务必保留本文链接:https://java.coder-hub.com/62215764.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定