如何在使用iText修改pdf文件时插入换行符?

时间:2018-01-23 16:13:28

标签: java pdf itext

我试图使用iText Java库修改pdf文件。我不知道如何在一行之后添加新行。这是我的代码。我希望打印#34;你好"在下一行。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

查看iText 5.5.12源代码(毕竟是它的开源),可以快速找到以下PdfContentByte方法:

/**
 * Moves to the start of the next line, offset from the start of the current line.
 *
 * @param       x           x-coordinate of the new current point
 * @param       y           y-coordinate of the new current point
 */
public void moveText(final float x, final float y)

因此,这应该做

pageContentByte.showText("javawithease.com");
pageContentByte.moveText(0, -20);
pageContentByte.showText("hello");

假设行高为20个用户空间单位。

或者你可以使用

/**
 * Sets the text leading parameter.
 * <P>
 * The leading parameter is measured in text space units. It specifies the vertical distance
 * between the baselines of adjacent lines of text.</P>
 *
 * @param       leading         the new leading
 */
public void setLeading(final float leading)

[...]

/**
 * Moves to the start of the next line.
 */
public void newlineText()

用于设置行高一次,然后重新使用值:

pageContentByte.showText("javawithease.com");
pageContentByte.setLeading(20);
pageContentByte.newlineText();
pageContentByte.showText("hello");
pageContentByte.newlineText();
pageContentByte.showText("hello again");

您甚至可以使用

newlineTextshowText合并到一个命令中
/**
 * Moves to the next line and shows <CODE>text</CODE>.
 *
 * @param text the text to write
 */
public void newlineShowText(final String text)
像这样:

pageContentByte.showText("javawithease.com");
pageContentByte.setLeading(20);
pageContentByte.newlineShowText("hello");
pageContentByte.newlineShowText("hello again");

这一切都说:这些是与PDF内容流中的个别指令相对应的非常低级的iText方法。除非你真的需要使用这样的低级例程,否则你应该至少使用像ColumnText这样的中级课程和Phrase等高级课程。

此外,由于您似乎刚开始使用iText,您可能应该使用当前的iText版本(7.1.x),而不是旧版本(5.5.x及更低版本)。