使用java在pdfbox中旋转文本

使用java在pdfbox中旋转文本,java,javafx,javafx-8,pdfbox,Java,Javafx,Javafx 8,Pdfbox,我想用pdfbox旋转文本,该文本将在图片中的一条线上 由于您没有提供划线代码,我在这里自己划线。你可能需要根据自己的情况调整这一点 要旋转行上方的文本,必须更改文本矩阵或当前转换矩阵以旋转以下内容,例如: PDDocument doc=新的PDDocument(); PDPage page=新PDPage(); 文件添加页(第页); PDPageContentStream cos=新的PDPageContentStream(文档,页面); cos.变换(Matrix.getRotateInst

我想用pdfbox旋转文本,该文本将在图片中的一条线上

由于您没有提供划线代码,我在这里自己划线。你可能需要根据自己的情况调整这一点

要旋转行上方的文本,必须更改文本矩阵或当前转换矩阵以旋转以下内容,例如:

PDDocument doc=新的PDDocument();
PDPage page=新PDPage();
文件添加页(第页);
PDPageContentStream cos=新的PDPageContentStream(文档,页面);
cos.变换(Matrix.getRotateInstance(-Math.PI/6100650));
cos.moveTo(0,0);
cos.lineTo(125,0);
cos.stroke();
cos.beginext();
字符串text=“0.72”;
cos.newlineatofset(50,5);
cos.setFont(PDType1Font.HELVETICA_粗体,12);
cos.showText(text);
cos.endText();
cos.close();
doc.save(“TextOnLine.pdf”);
doc.close();
(测试
testrotatedTexOnlineForceDrickKapema

我选择使用当前转换矩阵,因为它允许我与文本一起旋转水平线

结果是:

由于您没有提供划线代码,我在这里自己划线。你可能需要根据自己的情况调整这一点

要旋转行上方的文本,必须更改文本矩阵或当前转换矩阵以旋转以下内容,例如:

PDDocument doc=新的PDDocument();
PDPage page=新PDPage();
文件添加页(第页);
PDPageContentStream cos=新的PDPageContentStream(文档,页面);
cos.变换(Matrix.getRotateInstance(-Math.PI/6100650));
cos.moveTo(0,0);
cos.lineTo(125,0);
cos.stroke();
cos.beginext();
字符串text=“0.72”;
cos.newlineatofset(50,5);
cos.setFont(PDType1Font.HELVETICA_粗体,12);
cos.showText(text);
cos.endText();
cos.close();
doc.save(“TextOnLine.pdf”);
doc.close();
(测试
testrotatedTexOnlineForceDrickKapema

我选择使用当前转换矩阵,因为它允许我与文本一起旋转水平线

结果是:


请包括你用来画线的代码。请包括你用来画线的代码。如果你只有点(x1,y1)和(x2,y2),使用
Math.atan2(y2-y1,x2-x1)
获得角度,和
Math.sqrt((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1)))
获取行长度。当我们进行旋转时,我们需要将wich数据放在tx和ty中?@Michel“当我们进行旋转时,我们需要将wich数据放在tx和ty中?”-根据javadocs,
getRotateInstance
返回一个带有旋转和x/y转换的新矩阵。所以这个方法实际上返回了一个translate和rotate实例。因此,如果您只想围绕当前坐标系原点旋转,请使用0,0。如果您只有点(x1,y1)和(x2,y2),请使用
Math.atan2(y2-y1,x2-x1)
获取角度,使用
Math.sqrt((x2-x1)*(x2-x1))+((y2-y1)*(y2-y1))
获取线条长度。当我们进行旋转时,我们需要将wich数据放入tx和ty?@Michel“当我们进行旋转姿态时,我们需要将wich数据放入tx和ty?”-根据javadocs,
getRotateInstance
返回一个带有旋转和x/y平移的新矩阵。所以这个方法实际上返回了一个translate和rotate实例。因此,如果只希望围绕当前坐标系原点旋转,请使用0,0。