iText横向定位和定位?

use*_*929 33 itext

我刚开始使用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();
Run Code Online (Sandbox Code Playgroud)

但页面以纵向(非横向)渲染,图像放在左上角(根据要求不是10和15个单位).我究竟做错了什么?

Bru*_*gie 53

您使用的PageSize.A4_LANDSCAPE是由贡献者引入的变量,该变量应该从未添加到主版本中.请PageSize.A4.rotate()改用.

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

document.left(100f);
document.top(150f);
Run Code Online (Sandbox Code Playgroud)

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

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

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


Mad*_*han 6

您可以使用此示例,这对我来说是工作

 Document document = new Document();
 document.setPageSize(PageSize.A4.rotate());
Run Code Online (Sandbox Code Playgroud)


小智 5

iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
Run Code Online (Sandbox Code Playgroud)