使用iText消除PDF中的所有空白区域

时间:2011-03-23 15:40:33

标签: pdf whitespace itext

我正在测试iText以生成由平铺格式的8个图像组成的PDF。我使用JFreeChart创建一个图形,然后通过iText将其转换为图像。 PDF生成正常,但是当我打开输出文件时,左侧,右侧和底部仍有大约一英寸的空白区域。我想在打印时利用合法尺寸页面上的所有空间。

我知道PDF中没有“边距”的概念,而且它不是可编辑的格式。必须创建没有空白区域的图像。那么Doc​​ument构造函数中的额外参数实际上做了什么?

我认为通过向Document对象(LEGAL和1f params)提供必要的参数将消除空白区域,我的表将占用打印页面上的所有8.5x14,但没有运气。

有什么建议吗?提前致谢

原始代码:

// Setup document 
        Document doc = new Document(PageSize.LEGAL, 1f, 1f, 1f, 1f); 
        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("c:\\temp\\image_in_chunk.pdf")); 

        doc.open(); 

        //create the chart, save to file system, and create an iText Image object
        ChartUtilities.saveChartAsPNG(new File("C:\\temp\\img.png"), createChart(createDataset()), 240, 240);
        Image img1 = Image.getInstance("C:\\temp\\img.png"); 

        PdfPCell cell1 = null;
        Paragraph paragraph = new Paragraph(); 
        paragraph.add(new Chunk(img1, 0, 0, true)); 

        PdfPTable table = new PdfPTable(2);
        for (int i = 0; i < 8; i++) 
        { 
            cell1 = new PdfPCell(paragraph); 
            table.addCell(cell1);
        } 

        doc.add(table);
        doc.close();

更正并正常工作的代码(当然创建自己的JFreeChart为img1。我不能发布不是成员的示例图像输出):

// Setup document 
        Document doc = new Document(PageSize.LEGAL, 0f, 0f, 0f, 0f); 
        PdfWriter writer = PdfWriter.getInstance(doc, new FileOutputStream("c:\\temp\\image_in_chunk.pdf")); 

        doc.open(); 

        //create the chart, save to file system, and create an iText Image object
        ChartUtilities.saveChartAsPNG(new File("C:\\temp\\img.png"), createChart(createDataset()), 305, 250);
        Image img1 = Image.getInstance("C:\\temp\\img.png"); 

        // Create pdf document 
        for (int i = 0; i < 8; i++) 
        { 
            doc.add(new Chunk(img1, 0, 0, true));
        } 
        doc.close();

1 个答案:

答案 0 :(得分:0)

好的,您在Document构造函数中将页边距设置为1磅。 1点是1/72英寸。您应该使用0f代替,但这并不能解释1英寸的余量。小白色条子?当然......但不是你所描述的。

问题几乎肯定源于你将Image包裹在Paragraph中,PdfPTable又包裹在Image img1 = Image.getInstance(path); img1.scaleAbsoluteHeight(PageSize.LEGAL.getHeight()); img1.scaleAbsoluteWidth(PageSize.LEGAL.getWidth()); // you might need this, you might not. img1.setAbsolutePosition(0, 0); // and add it directly. document.add(img1); 中。

我建议您缩放图像以匹配页面大小,然后将图像直接添加到文档中,而不是将其包装在表格中:

{{1}}