我遇到了一个挑战,就是在纵向创建PDF中修剪框,然后将它旋转到横向,我就这样做了。
pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 270));
但是我的装饰盒去了香蕉。当我用相同的坐标再次定义它并且我定义的旋转时,修剪框具有相同的外观(周长)但不在同一个地方。 我试图定义修剪箱计算新坐标,但计算没有多大意义,因为计算(假设)没问题,但修剪框没有出现在纵向定义的位置。 假设我想要在纵向中定义一个修剪框,说内部是一张图片,当我旋转页面时,修剪框继续涉及相同的图片,这怎么办呢?
有人有任何想法吗?
欢呼声
更新:
这是原始的TrimBox设置:
这是在旋转PDF页面后的TrimBox:
我想要的是设置保持相同的TrimBox并在相同位置独立(如果页面是否旋转)。
干杯
更新:
PDF的旋转位于原始POST中。 TrimBox的定义是由BIRT制作的,由我们制作的改变的API定义了框,一个是TrimBox,并且是这样的:
PdfArray array = (PdfArray) pageDict.get(PdfName.TRIMBOX);
PdfRectangle trimBox = new PdfRectangle(Float.parseFloat(array.getArrayList().get(0).toString()),Float.parseFloat(array.getArrayList().get(1).toString()),Float.parseFloat(array.getArrayList().get(2).toString()), Float.parseFloat(array.getArrayList().get(3).toString()));
pageDict.put(PdfName.TRIMBOX, trimBox);
关于提供文件,我不能因为Stack不允许我(需要至少10个声誉)。
干杯
更新:
由于声誉(仅限2个链接),我删除了图片链接。
答案 0 :(得分:1)
我刚刚比较了您在Adobe Acrobat中提供的两个文件。而且看起来PDF应该是这样的。
页面词典中的条目:
/MediaBox [0, 0, 666.29, 912.89]
/TrimBox [22, 22, 600, 400]
/BleedBox [22, 22, 600, 400]
/ArtBox [22, 22, 600, 400]
在Adobe Acrobat中:
页面词典中的条目:
/TrimBox [22, 22, 600, 400]
/MediaBox [0, 0, 666.29, 912.89]
/BleedBox [22, 22, 600, 400]
/ArtBox [22, 22, 600, 400]
/Rotate 270
在Adobe Acrobat中:
因此,一切都很好,只有旋转被添加到页面词典中,因此,所有内容(包括修剪框)都会旋转。
因此,我认为当旋转是游戏的一部分时,用于显示修剪框的程序有些限制。
你提到了BIRT。也许BIRT有一套关于修剪盒的信息,这些信息存储在其他地方(根据您在问题中截取的截图,距离顶部,左侧,右侧和底部)。在这种情况下,旋转PDF时可能还必须更新这些信息。
或者,当您使用更改的API 定义框时,可能必须告知API有关旋转效果的信息吗?