J'ai besoin de convertir un fichier pdf en jpeg en utilisant C #. Et la solution (bibliothèque) doit être gratuite.
J'ai cherché beaucoup d'informations, mais il semble que je ne reçois rien de clair.
J'ai déjà essayé itextsharp et pdfbox (mais cela, l'image pdf2 est uniquement pour Java, je pense) sans succès.
J'ai essayé d'extraire les images du pdf individuellement, mais j'ai une erreur de paramètres invalides quand j'essaye d'extraire les images ... Semble qu'ils ont un encodage étrange.
N'importe qui peut me recommander une bibliothèque pour enregistrer un pdf dans un jpeg? Les exemples seront également très appréciés.
Merci!
SOLUTION: Comment convertir un pdf en image en utilisant C #
Ajoutez votre code à votre application, comme ceci (très simple):
//Transform pdf to jpg
PdfToImage.PDFConvert pp = new PDFConvert();
pp.OutputFormat = "jpeg"; //format
pp.JPEGQuality = 100; //100% quality
pp.ResolutionX = 300; //dpi
pp.ResolutionY = 300;
pp.FirstPageToConvert = 1; //pages you want
pp.LastPageToConvert = 1;
pp.Convert(PATH_PDF+ "report.pdf", PATH_IMAGE + "name.jpg");
La bibliothèque pdfiumviewer pourrait être utile ici. Il est également disponible en pépite.
Essayez le code suivant (changez les chemins en fonction de votre configuration).
try
{
using (var document = PdfiumViewer.PdfDocument.Load(@"input.pdf"))
{
var image = document.Render(0, 300, 300, true);
image.Save(@"output.png", ImageFormat.Png);
}
}
catch (Exception ex)
{
// handle exception here;
}
Edit 2: Code modifié pour montrer que l'index de page est 0 basé comme indiqué dans le commentaire de S.C. ci-dessous
Édition 1: Solution mise à jour Avez-vous essayé pdfsharp?
Voici comment je l'ai fait avec PDFLibNet:
public void ConvertPDFtoHojas(string filename, String dirOut)
{
PDFLibNet.PDFWrapper _pdfDoc = new PDFLibNet.PDFWrapper();
_pdfDoc.LoadPDF(filename);
for (int i = 0; i < _pdfDoc.PageCount; i++)
{
Image img = RenderPage(_pdfDoc, i);
img.Save(Path.Combine(dirOut, string.Format("{0}{1}.jpg", i,DateTime.Now.ToString("mmss"))));
}
_pdfDoc.Dispose();
return;
}
public Image RenderPage(PDFLibNet.PDFWrapper doc, int page)
{
doc.CurrentPage = page + 1;
doc.CurrentX = 0;
doc.CurrentY = 0;
doc.RenderPage(IntPtr.Zero);
// create an image to draw the page into
var buffer = new Bitmap(doc.PageWidth, doc.PageHeight);
doc.ClientBounds = new Rectangle(0, 0, doc.PageWidth, doc.PageHeight);
using (var g = Graphics.FromImage(buffer))
{
var hdc = g.GetHdc();
try
{
doc.DrawPageHDC(hdc);
}
finally
{
g.ReleaseHdc();
}
}
return buffer;
}