web-dev-qa-db-fra.com

PDFsharp éditer un fichier pdf

Environnement - Bibliothèque PDFsharp, Visual Studio 2012 et C # comme langage.

J'essaie de:

  1. lire Test1.pdf (largeur = 17 pouces, hauteur - 11 pouces) avec 1 page
  2. ajoutez-y du texte
  3. enregistrez-le sous un autre fichier (Test2.pdf)

Je suis capable de faire tout ce qui suit. Mais lorsque j'ouvre le fichier Test2.pdf, la taille de la page se réduit à Largeur = 11 pouces, Hauteur - 11 pouces. Ces fichiers PDF que j'utilise sont des fiches de spécifications de produit que j'ai téléchargées sur Internet. Je pense que cela se produit uniquement sur certains types de fichiers et je ne sais pas comment différencier ces fichiers.

Code donné ci-dessous:

//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");

J'ai téléchargé le fichier ici Test1.pdf

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

Comme suggéré par l'équipe PDFsharp, le code devrait être le suivant:

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");
20
Yuvi Dagar

Au lieu de modifier le document, veuillez créer un nouveau document et copier les pages de l'ancien document vers le nouveau document.

Un exemple de code peut être trouvé dans cet article sur le forum PDFsharp:
http://forum.pdfsharp.net/viewtopic.php?p=2637#p2637

12
Vive la déraison