使用pdflibnet和c#将pdf转换为jpg后,保持jpg的质量

本文关键字:jpg 保持 pdflibnet 转换 pdf 使用 | 更新日期: 2023-09-27 18:01:00

我使用此代码将pdf文件转换为jpg图像,但jpg图像的质量非常差;有人知道如何改变pdf的质量或保持其质量?我正在制作一个质量上乘的多页pdf。抱歉我英语不好。

 public void ConvertPDFtoJpg(string filename, string dirOut)
    {
        string[] archivo = filename.Split('''');
        string final = archivo[3].Replace(".pdf", "");
        string archOri = final;
        PDFLibNet.PDFWrapper _pdfDoc = new PDFLibNet.PDFWrapper();
        _pdfDoc.LoadPDF(filename);
        int p = 1;
        SqlConnection con1 = new SqlConnection("Data Source=192.168.10.25;User ID=sa;Initial Catalog=BECO");
        con1.Open();
        for (int s = 0; s < _pdfDoc.PageCount; s++)
        {
            Image img = RenderPage(_pdfDoc, s);
            string rutaFin = final + ".page" + p + ".jpg";
            img.Save(Path.Combine(dirOut, string.Format(rutaFin)));
            string textoCmd = "INSERT into imagenes (ruta1,valor,estado) VALUES ('" + rutaFin +"', '"+ archOri +"', 0)";
            SqlCommand com4 = new SqlCommand(textoCmd, con1);
            com4.ExecuteNonQuery();
            p++;
        }
        _pdfDoc.Dispose();
        con1.Close();
    }
    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;
    }

使用pdflibnet和c#将pdf转换为jpg后,保持jpg的质量

Matias,

您需要做的是在RenderPage方法中添加一行来指定输出DPI。

例如:

...
doc.CurrentX = 0;
doc.CurrentY = 0;
doc.RenderDPI = 300;
...

在这种情况下,我将其设置为300 DPI,这样可以提供更多的细节。