2015-12-01 81 views
-1

嗨我們有一個需要將現有的A4尺寸的PDF轉換爲Java中的A3尺寸PDF。由於我是itext api conversion pdfs的新手,任何人都可以指導我如何在java中使用itext或任何其他API來完成。如果樣品參考提供了可觀的。如何將現有的A4 PDF文檔轉換爲A3小冊子?

UPDATe:輸出PDF格式應爲A3小冊子格式。

+0

你可以使用ghostscript,並通過一個命令調用Java –

+0

謝謝。我需要批量生成pdf,我不能使用命令行。任何替代品在那裏? – Raj

+1

請編輯該問題以闡明「將A4轉換爲A3」的含義。您是否想要縮放內容,以便A3頁面看起來與A4頁面相同?您是否想要保留內容大小,在A3頁面上添加空白區域?你想在1 A3頁面上放2頁A4頁面嗎? – rhens

回答

1

請看看​​的例子。 在這個例子中,我們採取與299頁A4紙(primes.pdf)現有的PDF文件,我們將其轉換爲一個150頁的A3小冊子(a3_booklet.pdf):

public void manipulatePdf(String src, String dest) 
    throws IOException, DocumentException { 
    // Creating a reader 
    PdfReader reader = new PdfReader(src); 
    // step 1 
    Document document = new Document(PageSize.A3.rotate()); 
    // step 2 
    PdfWriter writer 
     = PdfWriter.getInstance(document, new FileOutputStream(dest)); 
    // step 3 
    document.open(); 
    // step 4 
    PdfContentByte canvas = writer.getDirectContent(); 
    float a4_width = PageSize.A4.getWidth(); 
    int n = reader.getNumberOfPages(); 
    int p = 0; 
    PdfImportedPage page; 
    while (p++ < n) { 
     page = writer.getImportedPage(reader, p); 
     if (p % 2 == 1) { 
      canvas.addTemplate(page, 0, 0); 
     } 
     else { 
      canvas.addTemplate(page, a4_width, 0); 
      document.newPage(); 
     } 
    } 
    // step 5 
    document.close(); 
    reader.close(); 
} 

我們創建PageSize.A3作爲參數Document對象,但由於PageSize.A3是縱向的,我們旋轉它,以便我們獲得橫向的頁面大小。我們需要A4頁面的寬度(這是橫向格式的A3頁面寬度的一半),並且我們遍歷現有文檔中的所有頁面。

如果我們遇到一個奇怪的頁面,我們將它添加到位置(x = 0; y = 0)。如果我們遇到偶數頁面,我們將它添加到位置(x = a4_width; y = 0),我們創建一個新頁面。