40

我刚刚开始使用 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

4 回答 4

61

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

于 2013-06-24T13:17:16.993 回答
16

你可以使用这个例子这对我有用

 Document document = new Document();
 document.setPageSize(PageSize.A4.rotate());
于 2019-03-28T10:12:42.433 回答
5
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
于 2017-07-20T07:15:11.670 回答
0
Document d = new Document(PageSize.A4.rotate(), 10f, 10f, 10f, 0f);

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

于 2018-08-23T18:13:07.123 回答