iText横向定位和定位?

问题描述 投票:28回答:4

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

itext
4个回答
51
投票

你正在使用PageSize.A4_LANDSCAPE,一个由贡献者引入的变量,它应该从未被添加到主要版本中。请改用PageSize.A4.rotate()

目前尚不清楚你想用线条实现什么目标:

document.left(100f);
document.top(150f);

那些是吸气剂,而不是制定者。看起来好像你假设PDF与HTML类似。这个假设是错误的。

如果您希望图像从左侧放置10个用户单元,从顶部放置15个用户单元(在这种情况下100和150是错误的值),您可以替换Document构造函数中的0值来定义左边距10个用户单位和上边距15个用户单位。

另一种方法是使用方法setAbsolutePosition()定义图像的绝对位置。在这种情况下,您需要注意坐标系的方向使得页面的左下角对于从头创建的文档具有坐标x = 0,y = 0。


4
投票

您可以使用此示例,这对我有用

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

3
投票
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);

这对我有用,我只是从上面的一些中删除了一些

© www.soinside.com 2019 - 2024. All rights reserved.