为了账号安全,请及时绑定邮箱和手机立即绑定

如何找出在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));

我得到的结果是这样的:

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

查看完整回答
反对 回复 2022-11-02
  • 1 回答
  • 0 关注
  • 308 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信