2010-11-03 5 views
5

मैं इस प्रश्न को सरल शब्दों में रखूंगा।ITextSharp - एक पृष्ठ में दो पीडीएफ मर्ज करें

_____ 
|abcd | 
|  | 
|  | 
|_____| 

और यह एक:

मैं इस पीडीएफ है

_____ 
|abcd | 
|1234 | 
|4567 | 
|_____| 

यह iTextSharp या किसी अन्य का उपयोग करते हुए संभव है:

_____ 
|1234 | 
|4567 | 
|  | 
|_____| 

मैं पाने के लिए उन्हें मर्ज करना चाहते हैं मुफ्त उपकरण?

अग्रिम धन्यवाद

उत्तर

0

हाँ ... यह भी एक पीडीएफ विशेषज्ञ के लिए, बस बहुत मुश्किल है। और सवाल पूछकर, आपने दिखाया है कि आप एक नहीं हैं ... कम से कम अभी तक नहीं। इसे बंद करो और आप अपने रास्ते पर अच्छे होंगे ... लेकिन:

किसी दिए गए पृष्ठ पर सभी सामग्री को घेरे हुए बाउंडिंग बॉक्स को निर्धारित करने का कोई आसान तरीका नहीं है। com.itextpdf.text.pdf.parser (या इसके # समतुल्य) में कई कक्षाएं हैं जो आपको रास्ते में मदद कर सकती हैं, लेकिन नीचे की रेखा यह है कि पीडीएफ इस तरह के पारदर्शी होने के लिए डिज़ाइन नहीं किया गया है।

I दृढ़ता से आपको कुछ अन्य दृष्टिकोणों का प्रयास करने की सलाह देते हैं। कुछ भी जिसमें वाक्यांश शामिल है "और फिर हमें पीडीएफ से जानकारी मिलती है" को ओवरहाल की आवश्यकता होती है। ओह, यह संभव है, लेकिन ऐसा करने के लिए लगभग हमेशा एक बेहतर तरीका है।

0

हमने पीडीएफमेगर नामक एक उत्पाद का उपयोग किया जो ऐसा ही करेगा। हालांकि यह सस्ता नहीं था। हमें वास्तव में कुछ भी नहीं मिला जो आसानी से इसे पूरा कर सके।

3

यह कोई पुराना सवाल है ... लेकिन अगर किसी में यहाँ फिर से मेरी समाधान यह था हो जाता है ... मैं था इस कठिन एक पृष्ठ में दो पृष्ठों के लिए कोडित तो यह मूल बातें पहले मैं दो PDF घुमाया है उस के बाद मैं उन्हें एक साथ मर्ज

को घुमाने के लिए दो पृष्ठों इस का उपयोग करें:

public static void RotatePDF(string inputFile, string outputFile) 
    { 
     using (FileStream outStream = new FileStream(outputFile, FileMode.Create)) 
     { 
      iTextSharp.text.pdf.PdfReader reader = new iTextSharp.text.pdf.PdfReader(inputFile); 
      iTextSharp.text.pdf.PdfStamper stamper = new iTextSharp.text.pdf.PdfStamper(reader, outStream); 

      iTextSharp.text.pdf.PdfDictionary pageDict = reader.GetPageN(1); 
      int desiredRot = 90; // 90 degrees clockwise from what it is now 
      iTextSharp.text.pdf.PdfNumber rotation = pageDict.GetAsNumber(iTextSharp.text.pdf.PdfName.ROTATE); 

      if (rotation != null) 
      { 
       desiredRot += rotation.IntValue; 
       desiredRot %= 360; // must be 0, 90, 180, or 270 
      } 
      pageDict.Put(iTextSharp.text.pdf.PdfName.ROTATE, new iTextSharp.text.pdf.PdfNumber(desiredRot)); 

      stamper.Close(); 
     } 
    } 
अब

आप उन्हें एक साथ विलय कर सकते हैं:

 public static void MergeTwoPdfsToSingle(string inputFile1, string inputFile2, string outputFile) 
    { 
     //Step 1: Create a Docuement-Object 
     Document document = new Document(); 
     try 
     { 
      //Step 2: we create a writer that listens to the document 
      PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(outputFile, FileMode.Create)); 

      //Step 3: Open the document 
      document.Open(); 

      PdfContentByte cb = writer.DirectContent; 
      PdfImportedPage page1; 
      PdfImportedPage page2;     

      // we create a reader for the document 
      PdfReader reader1 = new PdfReader(inputFile1); 
      PdfReader reader2 = new PdfReader(inputFile2); 

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

      page1 = writer.GetImportedPage(reader1, 1);         

      page2 = writer.GetImportedPage(reader2, 1);     

      cb.AddTemplate(page1, 0, 0); 
      //play around to find the exact location for the next pdf 
      cb.AddTemplate(page2, 0, 300); 
     } 
     catch (Exception e) { throw e; } 
     finally { document.Close(); } 
    } 
+0

कोई मौका तुम kno एडोब एक्रोबैट डीसी फॉर्म/नियंत्रण जैसे डेटा खोने से बचने के बारे में कुछ? अपने कोड का परीक्षण किया और यह पीडीएफ के ग्राफिक्स और ग्रंथों के लिए बहुत अच्छी तरह से काम करता है लेकिन मैं टेक्स्टबॉक्स, कम्बोबॉक्स और अन्य संपादन योग्य एडोब एक्रोबैट डीसी नियंत्रण जैसे नियंत्रण खो देता हूं। –

+1

@ पॉलवेइलैंड - यदि मैंने नए पीडीएफ में कॉपी करते समय नियंत्रण रखना चाहते हैं तो आपको अन्य धागे पर पढ़ा है, तो आपको पीडीएफ कॉपी क्लास का उपयोग करने की आवश्यकता है। – jaredbaszler

+0

@ jaredbaszler thx, इसे जांच लेंगे –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^