Je recherche un composant d’interface graphique .NET (différent de PDFsharp ) permettant de prévisualiser un document PDF d’une page .
Fondamentalement, j’ai besoin de quelque chose de similaire à PictureBox où je peux charger des bitmaps et les montrer.
Ce serait formidable si ce composant permet de zoomer et de déplacer une image en mouvement à l’intérieur.
Solutions Freeware préférées 🙂
Une autre option consiste à utiliser le contrôle WebBrowser dans votre interface graphique. Il va utiliser le navigateur pour rendre le fichier PDF, mais je ferais cette route plutôt que de perdre son temps avec le composant ActiveX d’Adobe Reader.
Si vous ne souhaitez pas que n’importe quel type de lecteur PDF soit disponible sur le client, vous pouvez également le convertir en fichier graphique via GhostScript et l’afficher sous forme de bitmap.
vous pouvez utiliser le composant ActiveX fourni avec Acrobat Reader.
Comment rendre les PDF en C #
La question est plutôt ancienne, mais les solutions proposées présentent des inconvénients importants:
Heureusement, des alternatives gratuites existent: des outils poppler (basés sur xpdf codebase), sous licence GPL, pouvant être utilisés comme utilitaire de console. À partir du code .NET, il peut être exécuté avec System.Diagnostics.Process.
Pour simplifier l’utilisation des outils de poppler, nous avons développé l’ encapsuleur NReco.PdfRenderer .NET qui incorpore les fichiers binarys des fenêtres de poppler (ils sont extraits lors de la première utilisation) et fournit une API simple permettant de rendre des pages PDF en images:
var pdfToImg = new NReco.PdfRenderer.PdfToImageConverter(); Image firstPageImg = pdfToImg.GenerateImage( "test.pdf", 1);
Le composant n’est pas gratuit, mais son prix est très raisonnable.
ImageGear pour .NET
Pas libre. On peut soutenir que sa scope est plus grande que ce qui vous préoccupe. J’espère que c’est en quelque sorte utile.
Quick PDF Library , le PDF SDK de mon entreprise, vous aidera à générer des fichiers PDF. Ce n’est pas un logiciel gratuit, mais la licence permet la dissortingbution sans redevance des applications compilées que vous créez avec. La recherche de composants libres / open source pour le rendu de fichiers PDF est un peu plus délicate que d’autres tâches de manipulation de PDF de base, car le rendu de fichiers PDF peut être assez difficile.
Voici un exemple de code source C # qui vous montre comment rendre le fichier PDF dans la zone d’image de votre formulaire.
private void Form1_Load(object sender, EventArgs e) { QuickPDFAX0718.PDFLibrary pdf = new QuickPDFAX0718.PDFLibrary(); qp.UnlockKey("......Licence Key......"); // Open PDF File int Handle = qp.DAOpenFile("C:\\sample.pdf", null); // Get Total Number of Pages in a PDF File int PageCount = qp.DAGetPageCount(Handle); int PageNo = 1; // It will get Reference of page 1 from PDF file int PageRefNo = qp.DAFindPage(Handle, PageNo); // You can change this parameter for Zoom In/Zoom Out purpose int Zoom = 76; double pageWidth = qp.DAGetPageWidth(Handle, PageRefNo) / Zoom; double pageHeight = qp.DAGetPageHeight(Handle, PageRefNo) / Zoom; // DPI use for rendering the page. Increase DPI will increate quality of image int dpi = 92; // Calculate Dimension of final output image Bitmap b = new Bitmap(Convert.ToInt32(pageWidth * dpi), Convert.ToInt32(pageHeight * dpi)); // This will Draw render image on GDI using (Graphics g = Graphics.FromImage(b)) { IntPtr dc = g.GetHdc(); qp.DARenderPageToDC(Handle, PageRefNo, dpi, (int)dc); g.ReleaseHdc(dc); } // Assigne rendered image to PictureBox Control which will display PDF on Windows Form. pictureBox1.Image = b; pictureBox1.BorderStyle = BorderStyle.Fixed3D; }
La bibliothèque n’inclut pas de fonctions intégrées pour vous aider à zoomer, mais puisque vous convertissez le PDF en image BMP, vous pouvez gérer le zoom assez facilement.