我刚刚开始使用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个单位)。我做错了什么?
答案 0 :(得分:48)
您正在使用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。
答案 1 :(得分:3)
iTextSharp.text.Document pdfDoc = new iTextSharp.text.Document(iTextSharp.text.PageSize.A4.Rotate(), 10f, 10f, 10f, 0f);
答案 2 :(得分:2)
您可以使用此示例,这对我来说很有用
Document document = new Document();
document.setPageSize(PageSize.A4.rotate());
答案 3 :(得分:0)
Document d = new Document(PageSize.A4.rotate(), 10f, 10f, 10f, 0f);
这对我有用,我只是从上面的内容中砍了一些