Java将分页的pdf报表文件合并成多表头报表

根据某个条件分组查询之后, 可能每个分组只有一条数据, 然后pdf根据每个分组来分页, 这样就会导致每页只有少量的数据, 有大量的空白区域, 想把后面每页的数据都往上移动, 并且每个分组都有表头等数据。求可以实现多表头报表的方法或者PDF文件内容合成的方式(PDF文件合成已会,但PDF文件合成最终合成的文件两页内容之间会有空白,打印的时候会浪费纸)

img

写入pdf的时候是自动分页的吗?能自定义分页条件的话应该可以解决吧

可否通过页面内容合并的方式,就是把下一页的表头放到上一页的空白区域,把多个表头放到同一页上面去。下面是代码,需引入spire.pdf.jar:

import com.spire.pdf.FileFormat;
import com.spire.pdf.PdfDocument;
import com.spire.pdf.PdfPageBase;
import com.spire.pdf.graphics.PdfBlendMode;
import com.spire.pdf.graphics.PdfTemplate;

import java.awt.geom.Point2D;

public class MergePages {
    public static void main(String[] args) {
        //加载PDF文档
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("test.pdf");

        //根据pdf的第2页绘制模板
        PdfPageBase page1 = pdf.getPages().get(1);
        PdfTemplate template = page1.createTemplate();

        //获取pdf的第1页
        PdfPageBase page0 = pdf.getPages().get(0);

        //设置透明度和重叠样式
        page1.getCanvas().setTransparency(1f,1f, PdfBlendMode.Normal);

        //将pdf的第2页内容写入第1页中的指定位置
        page0.getCanvas().drawTemplate(template,new Point2D.Float(0,80));

        //删除原有第二页内容
        pdf.getPages().remove(page1);

        //保存pdf
        pdf.saveToFile("MergePages.pdf", FileFormat.PDF);
        pdf.dispose();

    }
}

效果图:

img

能解决问题的话,点个采纳哟