如何在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个列?的主要内容,如果未能解决你的问题,请参考以下文章
使用 pandoc 在 pdf 文件中导出所有 yaml 书目