连字符 - 非断开连字符 - 在某些情况下错误的结果 - 用于Java的iText 7.1.0

时间:2018-01-13 15:21:52

标签: itext7

目前我正在用iText编写几个评估程序。

连字符存在问题。

我们需要非破坏连字符\ u2010,它在某些情况下无法正常工作 例。

screenshot of PDF

" 99"之间不应该有换行符和" Tage"或" 99"和" Frage"。 只有" 99天"按预期工作!

我希望那里有人知道可能是什么原因以及可以做些什么。

以下代码需要arialuni.ttf的正确路径。

提前多多感谢!德克

import java.awt.Desktop;
import java.io.File;
import java.io.IOException;
import com.itextpdf.io.font.PdfEncodings;
import com.itextpdf.kernel.font.PdfFont;
import com.itextpdf.kernel.font.PdfFontFactory;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.layout.Document;
import com.itextpdf.layout.element.Paragraph;
import com.itextpdf.layout.element.Text;
import com.itextpdf.layout.hyphenation.HyphenationConfig;

public class problem1 {
    public static void main(String[] args) throws IOException {
        String fnFont = "src/main/resources/fonts/arialuni.ttf";
        String fnPdf = "results/problem1.pdf";
        PdfWriter writer = new PdfWriter(fnPdf);
        PdfDocument pdf = new PdfDocument(writer);
        Document document = new Document(pdf);
        Text text = new Text(
                "Dies ist ein Satz in deutscher Sprache. An hm kann man sehen, ob alle Buchstaben da sind. Und der Umbruch? 99\u2011Tage-Kaiser.\n"
                        + "Dies ist ein Satz in deutscher Sprache. An hm kann man sehen, ob alle Buchstaben da sind. Und der Umbruch? 99\u2011Days-Kaiser.\n"
                        + "Dies ist ein Satz in deutscher Sprache. An hm kann man sehen, ob alle Buchstaben da sind. Und der Umbruch? 99\u2011Frage-Kaiser.\n");
        PdfFont font = PdfFontFactory.createFont(fnFont, PdfEncodings.IDENTITY_H, true);
        text.setFont(font);
        text.setFontSize(10);
        Paragraph paragraph = new Paragraph(text);
        paragraph.setHyphenation(new HyphenationConfig("de", "DE", 2, 2));
        document.add(paragraph);
        document.close();
        pdf.close();
        Desktop.getDesktop().open(new File(fnPdf));
        }
}

0 个答案:

没有答案