【问题标题】:PDF to bmp Images (12 pages = 12 images)PDF 到 bmp 图片(12 页 = 12 张图片)
【发布时间】:2014-08-30 11:32:39
【问题描述】:

我必须将 pdf 逐页解构/提取为位图图像。这将通过我设置的 Web 服务在服务器上完成。我怎样才能做到这一点?它必须是逐页的(每张图像一页)。 我真的被困住了,我知道你们中的一个天才有我一直在寻找的答案。

我试过了:http://www.pdfsharp.net/wiki/ExportImages-sample.ashx 不能正常工作。

我正在使用 C#; PDF 没有密码保护; 如果此解决方案可以将 Uri 作为 PDF 位置的参数,那就太好了!

该解决方案根本不应依赖 Acrobat PDF Reader

我一直在努力尝试使用 MigraDoc 和 PDFSharp 及其替代品来解决上述问题。

任何帮助/建议/代码将不胜感激!

提前致谢!

【问题讨论】:

    标签: c# asp.net pdf bitmap converter


    【解决方案1】:

    LibPdf

    此库将 PDF 文件转换为图像。支持的图像格式为 PNG 和 BMP,但您可以轻松添加更多格式。

    用法示例:

    using (FileStream file = File.OpenRead(@"..\path\to\pdf\file.pdf")) // in file
    {
        var bytes = new byte[file.Length];
        file.Read(bytes, 0, bytes.Length);
        using (var pdf = new LibPdf(bytes))
        {
            byte[] pngBytes = pdf.GetImage(0,ImageType.BMP); // image type
            using (var outFile = File.Create(@"..\path\to\pdf\file.bmp")) // out file
            {
                outFile.Write(pngBytes, 0, pngBytes.Length);
            }
        }
    }
    

    Bytescout PDF Renderer SDK

    using System;
    
    using Bytescout.PDFRenderer;
    
    
    namespace PDF2BMP
    {
        class Program
        {
            static void Main(string[] args)
            {
                // Create an instance of Bytescout.PDFRenderer.RasterRenderer object and register it.
                RasterRenderer renderer = new RasterRenderer();
                renderer.RegistrationName = "demo";
                renderer.RegistrationKey = "demo";
    
                // Load PDF document.
                renderer.LoadDocumentFromFile("multipage.pdf");
    
                for (int i = 0; i < renderer.GetPageCount(); i++)
                {
                    // Render first page of the document to BMP image file.
                    renderer.RenderPageToFile(i, RasterOutputFormat.BMP, "image" + i + ".bmp");
                }
    
                // Open the first output file in default image viewer.
                System.Diagnostics.Process.Start("image0.bmp");
            }
        }
    }
    

    【讨论】:

    • 我只是快速尝试一下,我会回复并将您的解决方案标记为答案。非常感谢您的快速回复!
    猜你喜欢
    • 1970-01-01
    • 2020-12-26
    • 2021-02-13
    • 1970-01-01
    • 2011-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多