FreeText注释外观流在横向PDF中使用iText

时间:2018-01-07 13:24:09

标签: annotations itext

这是我为自由文本注释创建外观流的代码。

cs.rectangle(bbox.getLeft() , bbox.getBottom(), bbox.getWidth(), bbox.getHeight());
cs.fill();

String[] text = new String[1];
text[0] = "BAC"

cs.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), pdfJSAnnotation.getFontSize());                        
cs.beginText();
cs.setLeading(fontSize + 1.75f);
cs.moveText(0, bbox.getHeight() - fontSize + .75f);

for (String s : text) {
    if (s.equals("\n")) 
        cs.newlineText();
    else 
        cs.showText(s);
}

cs.endText();

其中cs是PdfAppearance,bbox是Rectangle。当pdf是肖像时,这可以正常工作。但是,当它在横向时我遇到问题,比如说页面旋转是270。

显示的文字是垂直的。即使我使用cs.transform()旋转,它甚至不能正确旋转。我还尝试保存状态,执行旋转然后显示文本,然后在cs.endText()之后调用cs.restoreState(),但结果仍然不正确。

任何想法?

矩形是正确的,因为正确显示填充矩形形状的前2行。这是我遇到问题的文本。

1 个答案:

答案 0 :(得分:0)

解决方法是:   - 将外观尺寸设置为(高度,宽度),因为它是270度。

然后在PdfAppearance对象中:

  • 将其翻译为(height,0);
  • 旋转至270
  • 翻译成(-height,-height);

(试图删除这篇文章,但没有可用的选项)