我试图使用iText Java库修改pdf文件。我不知道如何在一行之后添加新行。这是我的代码。我希望打印#34;你好"在下一行。任何人都可以帮我解决这个问题吗?
答案 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");
您甚至可以使用
将newlineText
和showText
合并到一个命令中
像这样:/** * 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及更低版本)。