2013-01-21 75 views
6

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

क्या कोई जानता है कि पीओसी को पीडीसी के साथ पीडीसी को कैसे रखा जाए या शायद किसी अन्य .NET पुस्तकालयों, आदर्श रूप से मुक्त, जो मुझे एक मौजूदा पीडीएफ में एक पृष्ठ जोड़ने और अपने बुकमार्क बनाए रखने की अनुमति देगा? (मुझे पता है कि पृष्ठ को पहले पृष्ठ के रूप में जोड़ने से पृष्ठ रेफ को अमान्य कर दिया जाएगा, यही कारण है कि अंतिम पृष्ठ के रूप में एक पृष्ठ जोड़ना भी ठीक है।)

धन्यवाद सब!

उत्तर

5

यह पता चला कि पीडीएफ फाइल बुकमार्क का उपयोग करती है, न कि टीओसी।

एक समाधान है कि बुकमार्क के साथ काम करता यहाँ दिखाया गया है:
http://forum.pdfsharp.net/viewtopic.php?p=6660#p6660

मौजूदा फ़ाइल, संशोधन के लिए खोला जाता है एक नया पृष्ठ दस्तावेज़ के शुरू में डाला जाता है - और सभी बुकमार्क अभी भी काम करते हैं।

यहाँ कोड का टुकड़ा है:

static void Main(string[] args) 
{ 
    const string filename = "sample.pdf"; 
    File.Copy(Path.Combine("D:\\PDFsharp\\PDFfiles\\sample\\", filename), 
     Path.Combine(Directory.GetCurrentDirectory(), filename), true); 

    // Open an existing document for editing and loop through its pages 
    PdfDocument document = PdfReader.Open(filename); 
    var newPage = document.InsertPage(0); 

    // Get an XGraphics object for drawing 
    XGraphics gfx = XGraphics.FromPdfPage(newPage); 

    // Create a font 
    XFont font = new XFont("Times New Roman", 20, XFontStyle.BoldItalic); 

    // Draw the text 
    gfx.DrawString("Hello, World!", font, XBrushes.Black, 
     new XRect(0, 0, newPage.Width, newPage.Height), 
     XStringFormats.Center); 

    document.Save(filename); 
    // ...and start a viewer. 
    Process.Start(filename); 
} 
+0

इस समाधान के लिए धन्यवाद, यह एक आकर्षण की तरह काम किया! – DotNetDeveloper