我使用pdfbox创建pdf,但没有确定如何在x和y中设置文本,它将无法以正确的格式显示
PDDocument document=new PDDocument();
PDPage blank=new PDPage();
PDFont font=PDType1Font.HELVETICA_BOLD;
document.addPage(blank);
PDPageContentStream content=new PDPageContentStream(document, blank);
content.beginText();
int i=0;
int x=20;
int y=700;
while(i<5){
content. newLineAtOffset(x, y);
content.setFont(font, 12);
content.showText(id);
content.showText(role);
i++;
y=-20;
}
content.endText();
content.close();
document.save("BlankPage.pdf");
document.close();[it will increase x and i dont want to increase possition of x][1]
[1]: http://i.stack.imgur.com/Q1A6I.jpg
答案 0 :(得分:0)
不幸的是,OP没有解释没有采用正确格式的具体含义。
看看他的代码,但似乎他认为
content.newLineAtOffset(x, y);
将新行定位在给定的 x , y 作为绝对坐标。不是这种情况。相反, x , y 相对与之前的行坐标设置为 0 , 0 < / strong>在content.beginText()
生成的PDF指令中。
这实际上已经由Offset
中的newLineAtOffset
暗示,并在JavaDocs中明确指出:
/**
* The Td operator.
* Move to the start of the next line, offset from the start of the current line by (tx, ty).
*
* @param tx The x translation.
* @param ty The y translation.
* @throws IOException If there is an error writing to the stream.
* @throws IllegalStateException If the method was not allowed to be called at this time.
*/
public void newLineAtOffset(float tx, float ty) throws IOException
因此,他很可能想做类似
的事情int x=20;
int y=700;
content.beginText();
content.setFont(font, 12);
content.newLineAtOffset(x, y);
for (int i=0; i<5; i++)
{
content.showText(id);
content.showText(role);
content.newLineAtOffset(0, -20);
}
content.endText();