我使用itextsharp生成PDF文件,
我正在打印2个字符串leading1& leading2。
问题是当前导1长度增加时,它会影响前导2并且它会被削减。
但我想打印leading1&如果leading1中的字符数增加,则在下一行中为leading2。
基本上,leading2被硬编码为=你的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()
答案 0 :(得分:5)
您已选择在最低级别使用PDF语法添加文本。这意味着您需要计算要添加到文档中的每一段文本的长度,然后通过将文本添加到不同的showText()
序列中来分发文本,确保正确调整坐标。
这很难。
但是,您还选择使用iText,这意味着您可以让iText为您完成此项工作。例如:如果要在特定矩形内添加一段文本,则可以定义ColumnText
对象,定义Rectangle
,将文本添加为Paragraph
和{{ 1}}!
go()
现在文本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();
将被包裹在由坐标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"
变量将为您提供指示文本是否完全呈现(或者完全不适合)。
进一步阅读:
如果这个例子对你有所帮助,请帮助我理解我能做些什么来确保其他开发人员不会犯同样的错误,并解释是什么让你编写你编写的代码而不是尝试status
第一。您的信息将对我有用in writing a better book.