【问题标题】:How to position and wrap long text into next line using itextsharp?如何使用 itextsharp 将长文本定位和换行到下一行?
【发布时间】:2014-12-19 17:36:32
【问题描述】:

我正在使用 itextsharp 生成 PDF 文件,

我正在打印 2 个字符串leading1 和leading2。

问题是当leading1 长度增加时,它会影响leading2 并被修剪。

但如果leading1 中的字符数增加,我想在下一行打印leading1 &leading2。

基本上leading2 被硬编码为 = YOU DIDIT。但是leading1 是动态值。

所以,我只想知道如何定位和换行长文本。

这是我的代码...

谁能帮我做这件事?

PdfContentByte cb = writer.getDirectContent();
        cb.saveState();
        cb.beginText();
        cb.setFontAndSize(baseFontMedium, 10f);

        // float x = 6.4392f * commonView.INCH;
        float x = 6.47f * commonView.INCH;
        float y = pageSize.getHeight() - (1.13f * commonView.INCH);

        cb.setCMYKColorFillF(0f, 0f, 0f, 0.77f); 
        cb.setTextMatrix(1, 0, 0, 1, x, y); 
        cb.showText(leading1);

        x += new Chunk(leading1, fontMedium10Pt).getWidthPoint();

        cb.setCMYKColorFillF(1f, 0f, 0f, 0f);
        cb.setTextMatrix(1, 0, 0, 1, x, y);
        cb.showText(leading2);

        cb.endText();
        cb.restoreState()

【问题讨论】:

    标签: java pdf-generation itextsharp


    【解决方案1】:

    您已选择在最低级别使用 PDF 语法添加文本。这意味着您需要计算要添加到文档中的每一段文本的长度,然后通过将其添加到不同的showText() 序列中来分配文本,确保正确调整坐标。

    这很难。

    但是,您也选择了使用 iText,这意味着您可以让 iText 为您完成这项工作。例如:如果要在特定矩形内添加文本的 sn-p,则可以定义 ColumnText 对象,定义 Rectangle,将文本添加为​​ Paragraphgo()

    PdfContentByte cb = writer.getDirectContent();
    ColumnText ct = new ColumnText(cb);
    ct.setSimpleColumn(new Rectangle(36, 600, 200, 800));
    ct.addElement(new Paragraph("I want to add this text in a rectangle defined by the coordinates llx = 36, lly = 600, urx = 200, ury = 800"));
    int status = ct.go();
    

    现在文本 "I want to add this text in a rectangle defined by the coordinates llx = 36, lly = 600, urx = 200, ury = 800" 将被包裹在一个由坐标 llx = 36、lly = 600、urx = 200、ury = 800 定义的矩形区域内。status 变量将指示您是否文本已完全呈现(或者如果它不完全适合)。

    进一步阅读:

    如果此示例对您有所帮助,请帮助我了解我可以做些什么来确保其他开发人员不会犯同样的错误,并解释是什么让您编写了自己编写的代码,而不是先尝试ColumnText。您的信息将帮助我in writing a better book.

    【讨论】:

    猜你喜欢
    • 2011-02-14
    • 1970-01-01
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多