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

Java 如何使用itextsharp定位长文本并将其包装到下一行?,java,pdf-generation,itextsharp,Java,Pdf Generation,Itextsharp,我正在使用itextsharp生成PDF文件 我正在打印两个字符串,分别为引线1和引线2 问题是,当引线长度增加时,其影响引线2和引线被修剪 但如果第1行中的字符数增加,我想在下一行打印第1行和第2行 基本上,leading2是硬编码的,因为=是你干的。但领先是动态价值 所以,我只想知道如何定位和包装长文本 这是我的密码 有人能帮我做这件事吗 PdfContentByte cb = writer.getDirectContent(); cb.saveState();

我正在使用itextsharp生成PDF文件

我正在打印两个字符串,分别为引线1和引线2

问题是,当引线长度增加时,其影响引线2和引线被修剪

但如果第1行中的字符数增加,我想在下一行打印第1行和第2行

基本上,leading2是硬编码的,因为=是你干的。但领先是动态价值

所以,我只想知道如何定位和包装长文本

这是我的密码

有人能帮我做这件事吗

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
对象,定义
矩形
,将文本添加为
段落
go()

现在,文本
“我想将此文本添加到由坐标llx=36,lly=600,urx=200,ury=800定义的矩形中”
将被包装在由坐标llx=36,lly=600,urx=200,ury=800定义的矩形区域内。
status
变量将指示文本是否完全呈现(或者是否不完全适合)

进一步阅读:


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

关于llx、lly、urx和ury参数的有用解释如下:
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();