itext设置pdf的尺寸_java-iText PDFDocument页面大小不正确

看一下StampHeader1示例.我修改了您的代码,引入了ColumnText.showTextAligned()并为了简化起见使用了短语(也许您也可以更改代码的那一部分):

public void manipulatePdf(String src, String dest) throws IOException, DocumentException {

PdfReader reader = new PdfReader(src);

PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));

Phrase header = new Phrase("Copy", new Font(FontFamily.HELVETICA, 14));

for (int i = 1; i <= reader.getNumberOfPages(); i++) {

float x = reader.getPageSize(i).getWidth() / 2;

float y = reader.getPageSize(i).getTop(20);

ColumnText.showTextAligned(

stamper.getOverContent(i), Element.ALIGN_CENTER,

header, x, y, 0);

}

stamper.close();

reader.close();

}

如您所知,此代码假定未定义旋转.

现在看一下StampHeader2示例.我正在使用您的“错误”文件,并且添加了另外一行:

stamper.setRotateContents(false);

通过告诉压模不要旋转要添加的内容,可以使用坐标添加内容,就好像页面没有旋转一样.请查看结果:stamped_header2.pdf.我们在页面顶部添加了“复制”,但是随着页面旋转,我们看到单词出现在侧面.单词被旋转,因为页面被旋转.

也许这就是您想要的,也许不是.如果不是,请看一下StampHeader3,根据页面的旋转,我以不同的方式计算x和y:

if (reader.getPageRotation(i) % 180 == 0) {

x = reader.getPageSize(i).getWidth() / 2;

y = reader.getPageSize(i).getTop(20);

}

else {

x = reader.getPageSize(i).getHeight() / 2;

y = reader.getPageSize(i).getRight(20);

}

现在,“复制”一词出现在“页面顶部”上(但实际上,它可能是页面的侧面):stamped_header3.pdf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值