PDF在PDF旋转后保留TrimBox

时间:2013-07-20 11:15:52

标签: itext

我遇到了一个挑战,就是在纵向创建PDF中修剪框,然后将它旋转到横向,我就这样做了。

 pageDict.put(PdfName.ROTATE, new PdfNumber(rot + 270));

但是我的装饰盒去了香蕉。当我用相同的坐标再次定义它并且我定义的旋转时,修剪框具有相同的外观(周长)但不在同一个地方。 我试图定义修剪箱计算新坐标,但计算没有多大意义,因为计算(假设)没问题,但修剪框没有出现在纵向定义的位置。 假设我想要在纵向中定义一个修剪框,说内部是一张图片,当我旋转页面时,修剪框继续涉及相同的图片,这怎么办呢?

有人有任何想法吗?

欢呼声

更新:

这是原始的TrimBox设置:

enter image description here

这是在旋转PDF页面后的TrimBox:

enter image description here

我想要的是设置保持相同的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个声誉)。

干杯

更新:

Original file

PDF file after rotation

由于声誉(仅限2个链接),我删除了图片链接。

1 个答案:

答案 0 :(得分:1)

我刚刚比较了您在Adobe Acrobat中提供的两个文件。而且看起来PDF应该是这样的。

Test_Original.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中:

Page 1 of Test_Original.pdf displayed in Adobe Acrobat

Test_After_ROTATED.pdf

页面词典中的条目:

/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中:

Page 1 of Test_After_ROTATED.pdf displayed in Adobe Acrobat

因此,一切都很好,只有旋转被添加到页面词典中,因此,所有内容(包括修剪框)都会旋转。

因此,我认为当旋转是游戏的一部分时,用于显示修剪框的程序有些限制。

你提到了BIRT。也许BIRT有一套关于修剪盒的信息,这些信息存储在其他地方(根据您在问题中截取的截图,距离顶部,左侧,右侧和底部)。在这种情况下,旋转PDF时可能还必须更新这些信息。

或者,当您使用更改的API 定义框时,可能必须告知API有关旋转效果的信息吗?