我刚刚开始使用 iText(5.4.2,最新版本),有两件事我还没有弄清楚。
我有下面的代码。
Document d = new Document(PageSize.A4_LANDSCAPE,0,0,0,0);
PdfWriter writer = PdfWriter.getInstance(d, new FileOutputStream("C:/test.pdf"));
document.open();
document.newPage();
Image img = Image.getInstance(String.format("C:/file.png"));
img.scaleToFit(400,240);
document.left(100f);
document.top(150f);
document.add(img);
document.close();
但是页面以纵向(而不是横向)呈现并且图像被放置在左上角(不是按要求离它 10 和 15 个单位)。我究竟做错了什么?
最佳答案
您正在使用 PageSize.A4_LANDSCAPE
,一个由贡献者引入的变量,不应该被添加到主版本中。请使用 PageSize.A4.rotate()
反而。
不清楚你想用这些行实现什么:
document.left(100f);
document.top(150f);
这些是 getter,而不是 setter。看起来好像您假设 PDF 类似于 HTML。这种假设是错误的。
如果您希望将图像放置在距左侧 10 个用户单位和距顶部 15 个用户单位的位置(在这种情况下,100 和 150 是错误的值),您可以替换 Document 构造函数中的 0 值以定义左边距10 个用户单位,上边距 15 个用户单位。
另一种方法是使用方法
setAbsolutePosition()
定义图像的绝对位置。 .在这种情况下,您需要注意坐标系的方向是页面左下角的坐标 x=0 ,对于从头创建的文档,y=0。
关于iText横向和定位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17274618/