微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在现有的 pdf 旋转页面上写入文本

如何解决在现有的 pdf 旋转页面上写入文本

我正在使用 iText 7 (7.1.14) 开发一个应用程序,以在现有 PDF 的右上角写入文本。 我有旋转页面的问题,例如 90、270。 我尝试将 AffineTransform.getRotateInstance 应用于画布,但没有。

PdfFont bf = PdfFontFactory.createFont(FontConstants.HELVETICA);
float stringWidth = bf.getWidth(stringa,fontSize);
PdfCanvas canvas=new PdfCanvas(page,true);
float centeredPosition = pageSize.getWidth() - (pageSize.getWidth()/30);
float yCoord = (pageSize.getHeight()-fontSize-5);
float xCoord = centeredPosition-stringWidth;
canvas.beginText().setFontAndSize(bf,fontSize)
    .moveText(xCoord,yCoord)
    .showtext(stringa)
    .setTextRenderingMode(pageN)
    .endText();

解决方法

您想要添加显示在页面右上角的文本,即使页面旋转已应用于页面。

确保在考虑旋转的情况下获得页面大小,以便您的坐标计算对于旋转页面是正确的:

Rectangle pageSize = page.getPageSizeWithRotation();

例如,对于旋转 90 度的 A4 页面,这将返回 842x595 而不是 595x842。

然后在添加新内容时“忽略”页面旋转:

page.setIgnorePageRotationForContent(true);

这实际上对添加的文本应用了适当的反向旋转,从而取消了页面旋转,因此文本似乎没有旋转。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。