2013-01-21 15 views
6

Ho un PDF e vorrei aggiungere una pagina aggiuntiva, idealmente come prima pagina. Sono riuscito a farlo con PDFSharp, ma il problema è che il PDF originale contiene dei segnalibri, che vorrei mantenere. L'uso di PDFSharp sembra eliminare i segnalibri, o almeno non sono a conoscenza di opzioni o comandi per salvare il sommario originale con il PDF appena creato che contiene la pagina aggiuntiva.Come aggiungere una pagina aggiuntiva al pdf esistente mantenendo i segnalibri? (PDFSharp ecc.)

Qualcuno sa come mantenere il sommario con PDFSharp o forse qualsiasi altra libreria .NET, idealmente gratuita, che mi consentirebbe di aggiungere una pagina a un PDF esistente e di conservare i suoi segnalibri? (Sono consapevole che l'aggiunta di una pagina come prima pagina invaliderebbe i ref di pagina, ecco perché aggiungere una pagina come ultima è anch'essa ok).

Grazie a tutti!

risposta

5

Si è scoperto che il file PDF utilizza segnalibri, non un sommario.

una soluzione che funziona con i segnalibri è mostrato qui:
http://forum.pdfsharp.net/viewtopic.php?p=6660#p6660

Il file esistente viene aperto per le modifiche, una nuova pagina viene inserita all'inizio del documento - e tutti i segnalibri funzionano ancora.

Ecco il frammento di codice:

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

Grazie per questa soluzione, ha funzionato come un fascino! – DotNetDeveloper

Problemi correlati