如何在Java中导出PDF的n个列?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Java中导出PDF的n个列?相关的知识,希望对你有一定的参考价值。

我需要生成120列的PDF文件(所有列应该在一个页面上)。我正在使用iText。当我生成pdf列时会重叠。

我的问题是:

1)有没有办法让水平滚动条在列之间导航?

2)我们如何防止列重叠?

我在这个网站上看到了类似的问题(How to export n number columns as headings for PDF in Java?

但答案中提到的链接(http://itext-general.2136553.n4.nabble.com/What-is-the-maximum-page-size-for-PDF-in-iText-td2150839.html%22)是不活跃的。

请建议我这个。

答案

以下代码将设置页面大小。所以,如果我们有大量的列(例如:120,就像我的情况一样),它会自动显示pdf中的水平条进行导航。

Rectangle pageSize=new Rectangle(9400f,9400f);
Document doc=new Document(pageSize);

PdfWriter writer=PdfWriter.getInstance(document,baos);
writer.setUserunit(9900f);

// To prevent overlapping of columns, set the column widths as follows

PdfPTable table=new PdfPTable(120); // 120 is number of columns in table
table.setWidths(600f);
另一答案

我有类似的问题但是由于这个问题答案系列我得到了Mr.Harjinder先生所说的解决方案,但这里有一个提示,面对同样的问题创建文档后创建文档并保持宽度的轨迹你想要的,最后当你有水平滚动的轨道创建你的文档是下面的例子

包含列表和水平滚动条的PDF

public class Sample {
public static void main(String[] args) {
    try {
        float indentationLeft = 20f;
        float indentationLeftTemp = 20f;
        List prtLst = new List(List.UNORDERED);
        prtLst.setListSymbol("\u2022");
        prtLst.add("P1");
        prtLst.setListSymbol("+");
        prtLst.add("P2");
        prtLst.setListSymbol("\u2022");
        List prevList= prtLst;
        for(int i=0;i<500;i++){
            List chldLst2 = new List(List.UNORDERED);
            chldLst2.setIndentationLeft(indentationLeft);
            indentationLeftTemp+=20f;
            chldLst2.setListSymbol("\u2022");
            chldLst2.add("YY"+i);
            prevList.add(chldLst2);
            prevList=chldLst2;
        }
        prtLst.add("P3");


        Document d = null;
        if(indentationLeftTemp>400f){
            Rectangle pageSize=new Rectangle(indentationLeftTemp+200f,indentationLeftTemp+200f); 
            d = new Document(pageSize);
        }else{
            d = new Document();
        }
        PdfWriter.getInstance(d, new FileOutputStream("D:/test.pdf"));
        d.open();            
        d.add(prtLst);d.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
}

以上是关于如何在Java中导出PDF的n个列?的主要内容,如果未能解决你的问题,请参考以下文章

在 React-Table 中导出为 PDF

有啥方法可以在 ROR 中导出(生成)可编辑的 PDF?

使用 pandoc 在 pdf 文件中导出所有 yaml 书目

带有 ROOT 内核的 nbconvert 在降价中导出无名图

vue项目中导出PDF的两种方式

电脑桌面上的图纸怎么在CAD中导出PDF格式