2010-03-24 15 views
15

मैं कुछ ऐसा करने की कोशिश कर रहा हूं जो मैंने सोचा था कि यह काफी आसान होगा, हालांकि यह इतना आसान नहीं है और Google ने मदद नहीं की है।iTextSharp का उपयोग कर पीडीएफ में रिक्त पृष्ठ कैसे जोड़ें?

मैं पीडीएफ दस्तावेजों (अक्षरों) को एक साथ मर्ज करने के लिए iTextSharp का उपयोग कर रहा हूं ताकि वे सभी एक बार में मुद्रित हो सकें। यदि किसी पत्र में पृष्ठों की एक विषम संख्या है तो मुझे एक खाली पृष्ठ जोड़ने की आवश्यकता है, इसलिए हम अक्षरों को डबल-पक्ष मुद्रित कर सकते हैं।

// initiaise 
MemoryStream pdfStreamOut = new MemoryStream(); 
    Document document = null; 
    MemoryStream pdfStreamIn = null; 
    PdfReader reader = null; 
    int numPages = 0; 
    PdfWriter writer = null; 


for int(i = 0;i < letterList.Count; i++) 
{ 
    byte[] myLetterData = ...; 
    pdfStreamIn = new MemoryStream(myLetterData); 
    reader = new PdfReader(pdfStreamIn); 
    numPages = reader.NumberOfPages; 

    // open the streams to use for the iteration 
    if (i == 0) 
    { 
     document = new Document(reader.GetPageSizeWithRotation(1)); 
     writer = PdfWriter.GetInstance(document, pdfStreamOut); 
     document.Open(); 
    } 

    PdfContentByte cb = writer.DirectContent; 
    PdfImportedPage page; 

    int importedPageNumber = 0; 
    while (importedPageNumber < numPages) 
    { 
     importedPageNumber++; 
     document.SetPageSize(reader.GetPageSizeWithRotation(importedPageNumber)); 
     document.NewPage(); 
     page = writer.GetImportedPage(reader, importedPageNumber); 
     cb.AddTemplate(page, 1f, 0, 0, 1f, 0, 0); 
    } 
} 

मैं का उपयोग कर की कोशिश की है:

document.SetPageSize(reader.GetPageSizeWithRotation(1)); 
    document.NewPage(); 

एक अजीब के लिए पाश के लिए के अंत में

यहाँ पत्र के सभी मर्ज करने के लिए बुनियादी कोड मैं इस समय है सफलता के बिना पृष्ठों की संख्या।

उत्तर

28

वैसे मैं लगभग वहां था। दस्तावेज वास्तव में तब तक पेज नहीं बनायेगा जब तक कि आप उस पर कुछ न डालें, जैसे ही मैंने एक खाली टेबल जोड़ा, बम! इसने काम कर दिया!

यहाँ कोड है, तो दस्तावेज़ मैं विलय कर रहा हूँ पृष्ठों की एक विषम संख्या है कि एक रिक्त पृष्ठ जोड़ देगा है:

if (numPages > 0 && numPages % 2 == 1) 
{ 
    bool result = document.NewPage(); 
    document.Add(new Table(1)); 
} 

इस नए संस्करण में काम नहीं करता है, तब यह प्रयास करें:

document.Add(new Chunk()); 
+3

एक टेबल जोड़ना मेरे लिए काम नहीं करता था। शायद ITextSharp के एक नए संस्करण के कारण। 'जोड़ें (नया हिस्सा());' मेरे लिए काम किया। – Crispy

+0

अद्यतन के लिए धन्यवाद - यह काफी समय पहले था। :) – Russell

+0

मैं पुष्टि कर सकता हूं कि नए संस्करण के लिए आपको तालिका के बजाय 'चंक' जोड़ना चाहिए। पूरी तरह से काम किया! –

1

एक और विकल्प जो सफलतापूर्वक काम करता है।

if (numPaginas % 2 != 0) 
      { 
       documentoPdfUnico.SetPageSize(leitorPdf.GetPageSizeWithRotation(1)); 
       documentoPdfUnico.NewPage(); 
       conteudoPdf.AddTemplate(PdfTemplate.CreateTemplate(escritorPdf, 2480, 3508), 1f, 0, 0, 1f, 0, 0); 
      } 
संबंधित मुद्दे