我已经连接了几个PDF文件,其中一些是横向的。我现在正在加盖最终PDF的每一页。
我已经意识到,不使用setRotateContents(false)
会导致您的修改在-90度处添加到您期望的位置。除了我的一些横向页面实际上在这个阶段正确地将修改定位在0度。
如果我使用setRotateContents(false)
,那么所有这些修改都会顺时针旋转90度,这意味着我在横向页面上的大部分页面修改现在都是正确的0度,但我的一些横向页面现在处于+90度。 / p>
问题是我无法解决导致我的网页出现这种奇怪行为的原因?他们都使用非常相似的代码来生成报告。有没有人见过类似的问题?
答案 0 :(得分:2)
有3种不同的方式可以使用横向页面,并且所有这三种方法都被使用(我在这里使用8.5x11作为基础,YMMV):
所以你需要检查页面的旋转。
int rot = PdfReader.getPageRotation(pageNum);
如果你想让你的印章“偶数”出来,你需要根据那个轮换来改变它。基本的变换是这样的:
cos(rot), sin(rot), -sin(rot), cos(rot), xoff, yoff
旋转发生在原点附近 <0>。您需要xoff
和yoff
将邮票移回您想要的位置。因为你可以组合转换,一个常见的技巧是:
当您按照正确的顺序组合这三个单独的转换时,最终会得到一个可以满足您想要的转换。
或者你可以欺骗并使用AffineTransform.getRotateInstance( theta, centerX, centerY)
,但那里的乐趣在哪里? PdfContentByte.transform(AffineTransform)
会为你输出数组,但所有元素都按照正确的顺序将它们简单地传递给任何接受转换为6个浮点数的内容字节函数(参数通常称为“a” ,b,c,d,h,v“)。