使用免费的c#解决方案将pdf转换为jpeg

本文关键字:pdf 转换 jpeg 解决方案 免费 | 更新日期: 2023-09-27 18:03:05

我需要使用c#将pdf文件转换为jpeg文件。而解决方案(库)必须是免费的。

我查了很多资料,但似乎没有弄清楚。

我已经尝试了itextsharp和pdfbox(但是这个,pdf2image只适用于java,我认为)没有成功。

我试图单独从pdf中提取图像,但当我尝试提取图像时,我有无效参数的错误…似乎他们有一种奇怪的编码。

谁能给我推荐一个库来保存pdf到jpeg?示例也将非常感谢。

使用免费的c#解决方案将pdf转换为jpeg

库pdfiumviewer在这里可能会有所帮助。也可以作为nuget使用。

  1. 创建一个新的winforms应用程序。添加nuget"PdfiumViewer"到它。
  2. 这也将在x86和x64文件夹中添加两个名为"pdfium.dll"的本地dll到您的项目。设置"Copy to Output Directory"为"Copy Always"
  3. 尝试以下代码(更改路径以适应您的设置)。

        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;
        }
    

    编辑2:修改代码,显示页面索引是基于S.C.在

  4. 下面的评论中指出的0

编辑1:更新的解决方案 你试过pdfsharp了吗?

这个链接可能有帮助

我就是这样做的:

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;
}