2016-04-21 75 views
0

我有2個PDF,並不總是相同的頁數。將兩個文件並排合併爲1是可能的。通過這種方式,我的意思是來自這兩個pdf的第1頁將會在第2頁的同一頁上。如果其中一份PDF文件不夠長,我打算將合併的PDF文件的那一面留空。將2個PDF並排組合

我一直在尋找諸如iTextSharp等庫,但一直沒有任何運氣。如果可能的話,首選語言是C#。輸出可能甚至不需要是PDF格式,圖像就足夠了。謝謝。

+0

這應該可以使用任何通用PDF庫。特別是iTextSharp有可能。 – mkl

回答

0

您可以從每個頁面創建所謂的Form XObject,然後在頁面上並排繪製這些XObject。

這可以在Docotic.Pdf library的幫助下完成。這是一個示例,顯示如何將兩頁並排放在其他文檔的頁面上。

Create XObject from page

該示例使用來自同一文檔兩頁,還可以進行擴展它們。您可能不需要縮放頁面。無論如何,這個樣本應該會給你一些啓動信息。

聲明:我爲開發Docotic.Pdf庫的公司工作。

1

下面的代碼演示瞭如何2 PDF文件並排使用XFINIUM.PDF庫結合:

FileStream input1 = File.OpenRead("input1.pdf"); 
PdfFile file1 = new PdfFile(input1); 
PdfPageContent[] fileContent1 = file1.ExtractPageContent(0, file1.PageCount - 1); 
file1 = null; 
input1.Close(); 

FileStream input2 = File.OpenRead("input2.pdf"); 
PdfFile file2 = new PdfFile(input2); 
PdfPageContent[] fileContent2 = file2.ExtractPageContent(0, file2.PageCount - 1); 
file2 = null; 
input2.Close(); 

PdfFixedDocument document = new PdfFixedDocument(); 

int maxPageCount = Math.Max(fileContent1.Length, fileContent2.Length); 

for (int i = 0; i < maxPageCount; i++) 
{ 
    PdfPage page = document.Pages.Add(); 
    // Make the destination page landscape so that 2 portrait pages fit side by side 
    page.Rotation = 90; 

    if (i < fileContent1.Length) 
    { 
     // Draw the first file in the first half of the page 
     page.Graphics.DrawFormXObject(fileContent1[i], 0, 0, page.Width/2, page.Height); 
    } 
    if (i < fileContent2.Length) 
    { 
     // Draw the second file in the second half (x coordinate is half page) of the page 
     page.Graphics.DrawFormXObject(fileContent2[i], page.Width/2, 0, page.Width/2, page.Height); 
    } 
} 

document.Save("SideBySide.pdf"); 

聲明:我認爲發展這個庫中的公司工作。