2013-07-15 27 views
13

Ambiente - Libreria PDFsharp, Visual Studio 2012 e C# come lingua.PDFsharp modifica di un file pdf

sto provando a:

  1. lettura Test1.pdf (larghezza = 17 pollici, altezza - 11 pollici) con 1 pagina
  2. aggiungere del testo ad esso
  3. salvarlo come un altro file (Test2.pdf)

Sono in grado di eseguire tutte le operazioni seguenti. Ma quando apro il file Test2.pdf la dimensione della pagina si riduce a Larghezza = 11 pollici, Altezza - 11 pollici. Questi file PDF che sto utilizzando sono Fogli di specifiche del prodotto che ho scaricato da internet. Credo che questo stia accadendo solo su alcuni tipi di file e non sono sicuro di come differenziare questi file.

codice riportato qui di seguito:

//File dimentions - Width = 17 inches, Height - 11 inches (Tabloid Format) 
PdfDocument pdfDocument = PdfReader.Open(@"D:\Test1.pdf", PdfDocumentOpenMode.Modify); 

PdfPage page = pdfDocument.Pages[0]; 
XGraphics gfx = XGraphics.FromPdfPage(page); 
XFont font = new XFont("Verdana", 20, XFontStyle.BoldItalic); 
gfx.DrawString("Hello, World!", font, XBrushes.Black, new XRect(0, 0, page.Width, page.Height), XStringFormats.Center); 

//When the file is saved dimentions change to - Width = 11 inches, Height - 11 inches 
pdfDocument.Save(@"D:\Test2.pdf"); 

Ho caricato il file qui Test1.pdf

======================== ================================================== ========

come suggerito dal team PDFsharp il codice dovrebbe essere la seguente:

PdfDocument PDFDoc = PdfReader.Open(@"D:\Test1.pdf", PdfDocumentOpenMode.Import); 
PdfDocument PDFNewDoc = new PdfDocument(); 

for (int Pg = 0; Pg < PDFDoc.Pages.Count; Pg++) 
{ 
    PdfPage pp = PDFNewDoc.AddPage(PDFDoc.Pages[Pg]); 

    XGraphics gfx = XGraphics.FromPdfPage(pp); 
    XFont font = new XFont("Arial", 10, XFontStyle.Regular); 
    gfx.DrawString("Hello, World!", font, XBrushes.Black, new XRect(0, 0, pp.Width, pp.Height), XStringFormats.BottomCenter); 
} 

PDFNewDoc.Save(@"D:\Test2.pdf"); 
+1

tenta di modificare la pagina dal PDFNewDoc.Pages (non PDFDoc.Pages) - oppure prendere la pagina restituita dalla AddPage(). –

+0

Ho provato a eseguire questo codice. Il suo PdfReader non esiste nel contesto corrente? –

risposta

8

Invece di modificare il documento, creare un nuovo documento e copiare le pagine dal vecchio documento nel nuovo documento.

codice di esempio si possono trovare in questo post sul forum PDFsharp:
http://forum.pdfsharp.net/viewtopic.php?p=2637#p2637

+0

PDFsharp Team, grazie per la risposta. Proverò a ristrutturare il mio codice in questo modo e tornerò su questo. –

+0

PDFsharp Team, ho ristrutturato il mio codice. Sto ancora affrontando alcuni problemi. Si prega di dare un'occhiata al codice ristrutturato che ho pubblicato sopra. –

+0

Dopo aver seguito tutte le istruzioni sono riuscito a risolvere i miei problemi. Mille grazie al team PDFsharp. –