2015-03-31 93 views
2

我正在爲同一客戶端創建各種各樣的變量數據語句(90+)。我們每個工作日打印10K左右的聲明。一些聲明在頁面的左上角有一個特定的標識,其他標識有意忽略這個。一些陳述在底部附近具有圖像和/或文字,而另一些則沒有。這些以及其他許多內容在每個聲明中都被添加/省略。同一頁上的多個模板

我不確定它是否可行,但是是否可以將PDF層疊在一起?如果是這樣,我想我可以根據每個語句的需要添加'圖層'。然後,生成的「分層」PDF將成爲我的基礎文檔,然後我可以繼續添加數據。

否則我想我需要爲每個潛在的場景創建一個PDF。

(順便說一句,我試圖有條件地添加這些項目的直接圖像,但它會減慢速度了不少。)

編輯 我曾嘗試使用此代碼,但最終輸出只能說明添加了最後一個模板。

string[] templates = new string[]{ 
      pdfTemplate 
      ,thingsTemplate 
     }; 

     using (FileStream filestream = new FileStream(finalTemplate, FileMode.OpenOrCreate, FileAccess.Write)) 
     using (iTextSharp.text.Document document = new iTextSharp.text.Document(PageSize.LETTER)) 
     using (PdfWriter writer = PdfWriter.GetInstance(document, filestream)) 
     { 
      document.Open(); 
      PdfContentByte cb = writer.DirectContent; 
      PdfImportedPage page; 
      for (int i = 0; i < templates.Length; i++) 
      { 
       page = writer.GetImportedPage(new PdfReader(templates[i]), 1); 
       cb.AddTemplate(page, 1f, 0, 0, 1, 0, 0); 
      } 
      document.Close(); 
     } 

回答

2

是的,可以將不同的PDF層疊在一起。

看一看Layers的例子。我們有一個4頁的文件:layers_orig.pdf,然後我們將4頁添加到一個頁面:layers.pdf

那麼,不完全是你要添加它們的方式,但是你所描述的被稱爲superimposingStationery的例子或多或少是在做你在問什麼。

我們創建PDF,但在創建PDF時,我們添加了一些公司文具。這是文具:stationery.pdf。這是最終結果:text_on_stationery.pdf

您可以根據需要在此過程中添加儘可能多的信紙模板。

+0

再次感謝布魯諾! – rcurrydev 2015-03-31 16:35:00

+0

關於爲什麼我沒有得到我想要的結果的任何想法? – rcurrydev 2015-03-31 20:00:08

+0

如果更改添加模板的順序,會發生什麼情況?也許你已經以不透明的方式製作了模板。在這種情況下,你要添加所有的模板,但最後一個模板覆蓋了所有的模板。 – 2015-04-01 05:42:54