我刚刚开始使用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个单位的要求离它)。我做错了什么?
发布于 2013-06-24 13:17:16
您使用的是PageSize.A4_LANDSCAPE
,这是一个由贡献者引入的变量,不应该添加到主版本中。请改用PageSize.A4.rotate()
。
现在还不清楚你想用这些台词达到什么目的:
document.left(100f);
document.top(150f);
那些是getter,而不是setter。看起来,您似乎假设PDF类似于HTML。这种假设是错误的。
如果希望图像从左侧放置10个用户单元,从顶部放置15个用户单元(在这种情况下,100和150是错误的值),则可以替换文档构造函数中的0值,以定义10个用户单元的左边距和15个用户单元的上边距。
另一种方法是使用setAbsolutePosition()
方法定义图像的绝对位置。在这种情况下,您需要知道坐标系统是以这样一种方式定向的,即页面左下角的坐标x=0,y=0,用于从头创建的文档。
发布于 2019-03-28 10:12:42
你可以用这个例子--这是我的工作
Document document = new Document();
document.setPageSize(PageSize.A4.rotate());
发布于 2017-07-20 07:15:11
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
https://stackoverflow.com/questions/17274618
复制相似问题