如何旋转pdf页面并设置原点

how to rotate pdf page and set origin

我正在尝试旋转文档中的每个横向页面,因此所有页面都是纵向的。我正在为此使用 apache pdfbox。

PDPage page = document.getPage(pageIndex);
PDRectangle mediaBox = page.getMediaBox();
if(mediaBox.getWidth() > mediaBox.getHeight()) {
  page.setRotation(270);
}

这很好用,页面已旋转。现在,问题是,在我将文档发送到打印机后,它会在上面做一些标记(见图 1)。

在旋转的页面上,但标记出现在错误的位置。就像它会出现在横向页面上(见图 2)。

我觉得跟出身有关系。你知道如何设置原点,以便打印机标记出现在正确的位置吗?

谢谢你和最诚挚的问候 达利博尔

请试试这个:

PDPageContentStream cs = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true);            int rotation = page.getRotation();
switch (rotation)
{
    case 90:
        width = page.getMediaBox().getHeight();
        height = page.getMediaBox().getWidth();
        cs.transform(Matrix.getRotateInstance(Math.toRadians(90), height, 0));
        break;
    case 180:
        cs.transform(Matrix.getRotateInstance(Math.toRadians(180), width, height));
        break;
    case 270:
        width = page.getMediaBox().getHeight();
        height = page.getMediaBox().getWidth();
        cs.transform(Matrix.getRotateInstance(Math.toRadians(270), 0, width));
        break;
    default:
        break;
}

然后继续你的事情。不要忘记关闭内容流。上面的代码取自源代码下载的AddWatermarkText.java例子