2014-03-24 40 views
1

我有要求生成120列的PDF文件(所有列應該在一個頁面上)。我正在使用iText。當我生成pdf列重疊。如何在Java中爲PDF導出n個列?

我的問題是:

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提到的鏈接是無效的

請在此建議我。

+0

當要求把一個水平滾動在PDF上滾動瀏覽欄,將PDF視爲數字紙:您將如何滾動瀏覽她的欄目打印紙張?問問自己:使用傳統紙張時甚至有可能嗎? ;-) –

+0

感謝Bruno Lowagie的回覆。 – Harjinder

回答

1

/*以下代碼將設置頁面大小。因此,如果我們有大量的列(例如:與我的情況相同,則爲120)時,它將自動顯示pdf中的水平條以導航。*/

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

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


//爲了防止列的重疊,設列寬如下

PdfPTable =新PdfPTable(120); // 120是表格中的列數
table.setWidths(600f);

0

我有類似的問題,但由於這個問題答案系列我得到了Mr.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(); 
    } 
} 
}