2013-01-21 6 views
6

Ich habe ein PDF, und ich möchte eine zusätzliche Seite hinzufügen, idealerweise als erste Seite. Das konnte ich mit PDFSharp erreichen, aber das Problem ist, dass das Original-PDF Lesezeichen enthält, die ich beibehalten möchte. Die Verwendung von PDFSharp scheint die Lesezeichen zu löschen, oder mir sind keine Optionen oder Befehle zum Speichern des ursprünglichen Inhaltsverzeichnisses mit der neu erstellten PDF-Datei bekannt, die die zusätzliche Seite enthält.Wie füge ich einer bestehenden PDF-Datei eine zusätzliche Seite hinzu, während Lesezeichen beibehalten werden? (PDFSharp etc.)

Weiß jemand, wie man das Inhaltsverzeichnis mit PDFSharp oder vielleicht anderen .NET-Bibliotheken, idealerweise freien, behält, die es mir erlauben würden, eine Seite zu einer vorhandenen PDF hinzuzufügen und ihre Lesezeichen zu behalten? (Ich bin mir bewusst, dass das Hinzufügen einer Seite als erste Seite die Seitenreferenzen ungültig machen würde. Deshalb ist das Hinzufügen einer Seite als letzte Seite auch in Ordnung.)

Vielen Dank!

Antwort

5

Es stellte sich heraus, dass die PDF-Datei Lesezeichen, kein Inhaltsverzeichnis verwendet.

Eine Lösung, die mit Lesezeichen funktioniert wird hier gezeigt:
http://forum.pdfsharp.net/viewtopic.php?p=6660#p6660

Die vorhandene Datei wird für Änderungen geöffnet ist, wird eine neue Seite am Anfang des Dokuments eingefügt - und alle Lesezeichen immer noch funktionieren.

Hier ist der Code-Schnipsel:

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

Dank für diese Lösung, es funktionierte wie ein Zauber! – DotNetDeveloper

Verwandte Themen