0

我遇到了一个挑战,即在纵向的 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 名声望)。

干杯

更新:

原始文件

旋转后的PDF文件

由于声誉(只有 2 个链接),我删除了图像链接。

4

1 回答 1

1

我刚刚比较了您在 Adob​​e 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]

在 Adob​​e Acrobat 中:

在 Adob​​e Acrobat 中显示的 Test_Original.pdf 第 1 页

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

在 Adob​​e Acrobat 中:

在 Adob​​e Acrobat 中显示的 Test_After_ROTATED.pdf 第 1 页

因此,一切都很好,只有在页面字典中添加了旋转,因此,所有东西(包括修剪框)都被旋转了。

因此,我假设当旋转是游戏的一部分时,您用来显示裁切框的程序会受到一定的限制。

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

或者,当您使用您更改的定义框的 API 时,也许必须告知该 API 旋转效果?

于 2013-07-22T14:50:38.790 回答