繁体   English   中英

如何使用itextsharp将长文本定位并包装到下一行中?

[英]How to position and wrap long text into next line using itextsharp?

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

我正在打印2个字符串Lead1和Leading2。

问题是,当Lead1长度增加时,其影响Lead2并被修剪。

但是,如果增加Lead1中的字符数,我想在下一行打印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()

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

那很难。

但是,您还选择了使用iText,这意味着您可以让iText为您完成这项工作。 例如:如果要在特定矩形内添加文本片段,则可以定义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"定义的矩形中"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 您的信息将帮助我撰写更好的书。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM