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

如何在Java中导出PDF的n个数字列?,java,pdf,itext,Java,Pdf,Itext,我需要生成包含120列的PDF文件(所有列都应该在一个页面上)。我使用的是iText。生成pdf时,列会重叠 我的问题是: 1)有没有办法放置水平滚动条在列之间导航? 2)如何防止列重叠? 我在这个网站上看到过类似的问题 () 但是答案中提到的链接 ()处于非活动状态 请就此向我提出建议。以下代码将设置页面大小。所以,如果我们有大量的列(例如:在我的例子中是120列),它将自动显示pdf中的水平条以进行导航 Rectangle pageSize=new Rectangle(9400f,9400f

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

我的问题是:

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

2)如何防止列重叠?

我在这个网站上看到过类似的问题 ()

但是答案中提到的链接 ()处于非活动状态


请就此向我提出建议。

以下代码将设置页面大小。所以,如果我们有大量的列(例如:在我的例子中是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);

我也有类似的问题,但由于这个问答系列,我得到了Harjinder先生所说的解决方案,但对于那些面临同样问题的人来说,这里有一个提示:在创建PDF元素后创建文档,并保持所需宽度的轨迹,最后在有水平滚动轨迹时创建文档,下面是一个示例

带有列表和水平滚动条的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();
    }
}
}
公共类示例{
公共静态void main(字符串[]args){
试一试{
浮动缩进左=20f;
浮动缩进LeftTemp=20f;
List prtLst=新列表(列表无序);
prtLst.setListSymbol(“\u2022”);
prtLst.添加(“P1”);
prtLst.setListSymbol(“+”);
prtLst.添加(“P2”);
prtLst.setListSymbol(“\u2022”);
List prevList=prtLst;
对于(int i=0;i400f){
矩形页面大小=新矩形(indentationLeftTemp+200f,indentationLeftTemp+200f);
d=新文档(页面大小);
}否则{
d=新文件();
}
getInstance(d,新文件输出流(“d:/test.pdf”);
d、 open();
d、 添加(prtLst);d.关闭();
}捕获(例外e){
e、 printStackTrace();
}
}
}

当要求在PDF上放置水平滚动条以滚动列时,请将PDF视为数字纸:如何滚动打印纸上的列?问问自己:在使用传统纸张时,这可能吗?;-)感谢布鲁诺·洛瓦吉的回复。