PDFiumSharp PDF 到图像大小

PDFiumSharp PDF to Image size

我正在使用 PDFiumSharp 从 PDF 文件生成 JPG。这是我的代码:

using (WebClient client = new WebClient())
{
    byte[] pdfData = await client.DownloadDataTaskAsync(pdfUrl);

    using (var doc = new PdfDocument(pdfData))
    {
        int i = 0;
        foreach (var page in doc.Pages)
        {
            using (var bitmap = new PDFiumBitmap((int)page.Width, (int)page.Height, true))
            using (var stream = new MemoryStream())
            {
                page.Render(bitmap);
                bitmap.Save(stream);
                ...
                i++;
            }
        }
    }
}

代码运行良好,图像生成准确。但是,每个 JPG 大约 2mb。对于多页 PDF,整体图像大小加起来很快。有什么办法可以减小 JPG 文件的大小?我只需要 JPG 用于预览目的,而不是用于打印。所以较低的分辨率或质量是可以的。

当您调用 bitmap.Save(...) 时,放入 MemoryStream stream 的结果 byte[] 表示一个 BMP。你应该自己把它转换成JPG。

    public static byte[] Render(PdfDocument pdfDocument, int pageNumber, (int width, int height) outputSize)
    {
        var page = pdfDocument.Pages[pageNumber];

        using var thumb = new PDFiumBitmap((int)page.Width, (int)page.Height, false);
        page.Render(thumb);

        using MemoryStream memoryStreamBMP = new();
        thumb.Save(memoryStreamBMP);

        using Image imageBmp = Image.FromStream(memoryStreamBMP);

        using MemoryStream memoryStreamJPG = new();
        imageBmp.Save(memoryStreamJPG, ImageFormat.Jpeg);

        return memoryStreamJPG.ToArray();
    }