亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何找出在itext7中設置換行符(連字符)的位置

如何找出在itext7中設置換行符(連字符)的位置

一只萌萌小番薯 2022-11-02 10:02:59
如何找出設置換行符的位置?PdfDocument pdfDoc = new PdfDocument(new PdfWriter(DEST));Document doc = new Document(pdfDoc, PageSize.A4);Paragraph paragraph = new Paragraph()            .setHyphenation(new HyphenationConfig("en", "EN", 2, 2))            .add(new Text(bigString));doc.add(paragraph);doc.close();在左側,一切都從同一級別開始。:我想在連字符后更改 margin-left 到每一行 margin-left 不同:我可以找到連字符之前的行和連字符的寬度嗎?我是這樣做的:1)找出頁面的寬度MAX =  doc.getPdfDocument().getDefaultPageSize().getWidth() - (doc.getLeftMargin() + doc.getRightMargin());2)我數寬度字widthWordsAllLine +=  font.getWidth(words.get(i),22);3) if (widthWordsAllLine + font.getWidth(words.get(i),22)> MAX) i 除字。4)然后我將每個單詞并劃分單詞添加到段落中。并設置段落.setMagrinLeft(10);我沒有描述所有內容,因為這需要很多時間它可以工作,但是如果我添加一個新功能,一切都將無法正常工作(例如文本對齊)。它可以以不同的方式實施嗎?
查看完整描述

1 回答

?
慕沐林林

TA貢獻2016條經驗 獲得超9個贊

我對這個問題的理解:目標是為段落的每一行添加隨機邊距,以便在使用類似手寫的字體時,它看起來仍然像手動編寫的文本。也應該使用連字符,因此是嘗試將文本分成段落的原始方法。


不過,解決方案可以更簡單。我們可以將即將繪制的段落的線條在繪制之前稍微移動一下。將保留包括連字符在內的所有功能。


可以通過以下方式使用自定義渲染器完成:


private static class CustomParagraphRenderer extends ParagraphRenderer {

    public CustomParagraphRenderer(Paragraph modelElement) {

        super(modelElement);

    }


    @Override

    public void drawChildren(DrawContext drawContext) {

        Random r = new Random();

        if (lines != null) {

            for (LineRenderer line : lines) {

                int leftMargin = r.nextInt(10);

                line.move(leftMargin, 0);

                line.draw(drawContext);

            }

        }

    }


    @Override

    public IRenderer getNextRenderer() {

        return new CustomParagraphRenderer((Paragraph) modelElement);

    }

}

將其應用于段落很容易:


Paragraph paragraph = new Paragraph(longStr);

paragraph.setHyphenation(new HyphenationConfig("en", "US", 2, 2));

paragraph.setNextRenderer(new CustomParagraphRenderer(paragraph));

我得到的結果是這樣的:

http://img1.sycdn.imooc.com//6361d011000148bd06020334.jpg

查看完整回答
反對 回復 2022-11-02
  • 1 回答
  • 0 關注
  • 387 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號