首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pdfbox :在旋转的页面中绘制图像

Pdfbox :在旋转的页面中绘制图像
EN

Stack Overflow用户
提问于 2020-08-26 20:08:16
回答 1查看 585关注 0票数 1

我有一个简单的带有属性/Rotate 90的A4 pdf文档:我的pdf的原始版本是横向的,但打印了肖像。

我试图在肖像文档的左下角绘制一个小图像。

到目前为止,我的代码如下:

代码语言:javascript
运行
复制
    File file = new File("rotated90.pdf");
    try (final PDDocument doc = PDDocument.load(file)) {
        PDPage page = doc.getPage(0);
        PDImageXObject image = PDImageXObject.createFromFile("image.jpg", doc);
        PDPageContentStream contents = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, false, true);
        contents.drawImage(image, 0, 0);
        contents.close();
        doc.save(new File("newpdf.pdf"));
}

这是最终结果:正如您所看到的,图像被放置在左上角(这是旋转前的0,0坐标),并且没有旋转。

我试着玩drawImage(PDImageXObject image, Matrix matrix),但没有成功。

这是原始文档pdf with 90° rotation

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-27 16:23:25

对于旋转90度的页面,这里有一个解决方案:

代码语言:javascript
运行
复制
PDPageContentStream cs = new PDPageContentStream(doc, page, PDPageContentStream.AppendMode.APPEND, true, true);
PDImageXObject image = ....
cs.saveGraphicsState();
cs.transform(Matrix.getRotateInstance(Math.toRadians(90), page.getCropBox().getWidth() + page.getCropBox().getLowerLeftX(), 0));
cs.drawImage(image, 0, 0);
cs.restoreGraphicsState();
cs.close();

如果只是映像,则不需要保存/恢复。

将页面旋转270°后的解决方案:

代码语言:javascript
运行
复制
cs.transform(Matrix.getRotateInstance(Math.toRadians(270), 0, page.getCropBox().getHeight() + page.getCropBox().getLowerLeftY()));

对于180°:

代码语言:javascript
运行
复制
cs.transform(Matrix.getRotateInstance(Math.toRadians(180), page.getCropBox().getWidth() + page.getCropBox().getLowerLeftX(), page.getCropBox().getHeight() + page.getCropBox().getLowerLeftY()));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63597316

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档