【问题标题】:iText Paragraph overflow handlingiText 段落溢出处理
【发布时间】:2016-03-30 11:26:17
【问题描述】:

如何为 iText 文档中固定矩形中的段落处理非常长的动态文本?

ColumnText ct = new ColumnText(canvas);
Font paragraphFont=new Font(baseFont,4.5f);
ct.setSimpleColumn(9, 70, 70, 95);
Paragraph paragraph=new Paragraph("REALLLLLLLLLLY LONGGGGGGGGGG text",paragraphFont);
ct.addElement(paragraph);
ct.go();

【问题讨论】:

  • 欢迎使用 StackOverflow!您能否在您的问题中添加有关问题的更多详细信息以及您希望事情如何工作(包装、剪辑等)。也许您可以添加您希望此类文本如何显示的图像?
  • 文本将换行以适合您定义的矩形。不适合的文本将不会被呈现。它存储在列中,以便您可以将其添加到另一个位置。你读过iText FAQ吗?

标签: java pdf itext


【解决方案1】:

我已将您的代码 sn-p 复制/粘贴到我命名为 SimpleColumn 的示例中:

public void createPdf(String dest) throws IOException, DocumentException {
    // step 1
    Rectangle rect = new Rectangle(100, 120);
    Document document = new Document(rect);
    // step 2
    PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(dest));
    // step 3
    document.open();
    // step 4
    PdfContentByte canvas = writer.getDirectContent();
    BaseFont baseFont = BaseFont.createFont();
    ColumnText ct = new ColumnText(canvas);
    Font paragraphFont=new Font(baseFont,4.5f);
    ct.setSimpleColumn(9, 70, 70, 95);
    Paragraph paragraph = new Paragraph("REALLLLLLLLLLY LONGGGGGGGGGG text",paragraphFont);
    ct.addElement(paragraph);
    ct.go();
    // step 5
    document.close();
}

这会产生文件simple_column.pdf

如您所见,文本正确显示在一个矩形内,该矩形的左下角坐标为x = 9; y = 70,右上角坐标为x = 70, y = 95。文本不适合此矩形的宽度,因此被换行(在空白字符处分割并分布在两行中)。

这是当您想要在固定矩形中呈现段落时处理的长度。如果段落不适合矩形,则段落的其余部分存储在ColumnText 对象中。您可以定义一个新的简单列(使用不同的坐标)来呈现段落的其余部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-02
    相关资源
    最近更新 更多