iText横向定位和定位?

44

我刚开始使用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个单位)。我做错了什么?

4个回答

65

您正在使用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,适用于从头开始创建的文档。


18

你可以使用这个例子,对我来说它有效。

 Document document = new Document();
 document.setPageSize(PageSize.A4.rotate());

4
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);

0
Document d = new Document(PageSize.A4.rotate(), 10f, 10f, 10f, 0f);

这对我有用,我只是从上面的代码中删掉了一些部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接