首页 > 编程语言 >ASP.NET Core PDF 转图片

ASP.NET Core PDF 转图片

时间:2024-03-23 11:23:08浏览次数:27  
标签:Core ASP pageReader rawBytes bmp result var using NET

可以使用 DocNET: https://github.com/GowenGit/docnet



直接 Nuget:

Install-Package Docnet.Core



然后:

        public static bool Pdf2Image(string inputPath, string outputFolder)
        {
            bool result = false;
            try
            {
                using (var docReader = DocLib.Instance.GetDocReader(inputPath, new PageDimensions(1080, 1920)))
                {
                    //open pdf file
                    int num = docReader.GetPageCount();
                    for (int pageNumber = 0; pageNumber < num; pageNumber++)
                    {
                        using (var pageReader = docReader.GetPageReader(pageNumber))
                        {
                            //var rawBytes = pageReader.GetImage();
                            var rawBytes = pageReader.GetImage(new NaiveTransparencyRemover(255, 255, 255));


                            var width = pageReader.GetPageWidth();
                            var height = pageReader.GetPageHeight();
                            //var characters = pageReader.GetCharacters();

                            //using bitmap to create a png image
                            using (var bmp = new Bitmap(width, height, PixelFormat.Format32bppArgb))
                            {
                                AddBytes(bmp, rawBytes);
                                //DrawRectangles(bmp, characters);
                                using (var stream = new MemoryStream())
                                {
                                    //saving and exporting
                                    bmp.Save(stream, ImageFormat.Png);
                                    System.IO.File.WriteAllBytes(Path.Combine(outputFolder, $"Page_{pageNumber + 1}.png"), stream.ToArray());
                                };
                            };
                        };
                    }
                };

                Console.WriteLine("All pages converted to images.");
                result = true;
            }
            catch (Exception e)
            {
                Console.WriteLine($"error:{e}");
            }

            return result;
        }

        private static void AddBytes(Bitmap bmp, byte[] rawBytes)
        {
            var rect = new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height);

            var bmpData = bmp.LockBits(rect, ImageLockMode.WriteOnly, bmp.PixelFormat);
            var pNative = bmpData.Scan0;

            Marshal.Copy(rawBytes, 0, pNative, rawBytes.Length);
            bmp.UnlockBits(bmpData);
        }



然后上控制器调用下看看效果:

        public IActionResult Index()
        {
            bool result = PdfHelper.Pdf2Image("E:\\pdf\\compressed.tracemonkey-pldi-09.pdf", "E:\\pdf\\images\\");
            return Content(result.ToString());
        }




查看效果:


屏幕截图 2024-03-23 111110

标签:Core,ASP,pageReader,rawBytes,bmp,result,var,using,NET
From: https://www.cnblogs.com/sun8134/p/18090883

相关文章

  • DualGNN: Dual Graph Neural Network for Multimedia Recommendation
    目录概符号说明DualGCN代码WangQ.,WeiY.,YinJ.,WuJ.,SongX.andNieL.DualGNN:Dualgraphneuralnetworkformultimediarecommendation.IEEETransactionsonMultimedia,2023.概多模态+userco-occureencegraph->recommendation.文章中提到的modali......
  • .net core 实例教程(一)新建项目
    本文源码下载地址:http://www.80cxy.com/Blog/ResourceView?arId=202403191532545995NAAqJh系列教程地址:http://www.80cxy.com/Blog/ArticleView?arId=202403191517574161ay3s5V本实例教程将开发一个角色管理系统。主要包http://www.80cxy.com/Blog/ArticleView?arId=20240319151......
  • .Net 8.0 下的新RPC,IceRPC之接口定义语言 [Slice] VS [Protobuf]
    作者引言很高兴啊,我们来到了接口定义语言(IDL)篇,RPC之基石,有了它,可以在各种各种语言中实现RPC通讯。Slice和Protobuf是什么?IceRPC的核心是一个面向字节bytes的RPC框架:它可以轻松地发送携带字节的请求requests,并接收携带更多字节的响应responses.IceRPC以字节为中心......
  • Orleans - 1 .NET生态构建分布式系统的利器
    在当今数字化时代,构建高效、可靠的分布式系统是许多企业和开发团队面临的挑战。微软的Orleans框架为解决这些挑战提供了一个强大而简单的解决方案。本文将介绍Orleans的核心概念,并通过一个简单的示例代码来演示其用法。什么是Orleans?Orleans是由微软开发的一个开源分布......
  • abp9 .net8 升级错误记录
    错误一、Cannotfindcompilationlibrarylocationforpackage'System.Security.Cryptography.Pkcs'修复方法: 将以下配置设置添加到您的YX.OAM.Web.Mvc.csproj文件中。<GenerateRuntimeConfigDevFile>true</GenerateRuntimeConfigDevFile>错误二、使用多上下文,升级mys......
  • [Container] Introduction to Kubernetes
    DefineKubernetesAlsoknowasK8S,isanopen-sourcesystemforautomatingdeployment,scaling,andmanagementofcontainerizedapplications.Anopensourcecontainerizationorchestrationpaltform.Easolyportableacrosscloudsandon-premisesIncludes......
  • .NET开源、免费、强大的交互式绘图库
    前言今天大姚给大家分享一款.NET开源(采用MIT许可证)、免费、强大的交互式绘图库,该库能够轻松地实现大型数据集的交互式显示。使用几行代码即可快速创建折线图、柱状图、饼图、散点图等不同类型的图表:ScottPlot。ScottPlot类库支持平台和框架ConsoleApplication、WinForms、WPF......
  • 台达变频通过Modbus转Profinet网关可以在环网冗余中使用
    Modbus转Profinet网关(XD-MDPN100)是一种能够实现Modbus协议与Profinet协议之间转换的设备。它支持ModbusRTU协议和Profinet协议还支持MRP环网冗余系统,,可以通过配置软件进行协议转换,使得原本只能使用Modbus协议的设备可以与使用Profinet协议的系统进行通信。下面以Modbus转Profi......
  • .net 7 WebAPI 跨域配置(应用跨域、静态资源跨域)
    varbuilder=WebApplication.CreateBuilder(args);//Addservicestothecontainer.builder.Services.AddCors(options=>{options.AddPolicy("any",builder=>{//应用请求跨域builder.SetIsOriginAllowed(_=>true).AllowAnyO......
  • aspx请求
     什么叫阿贾克斯请求就是当我们点击这个查询的时候地址栏的地址不会改变,那么就属于ajx请求看到地址栏里面的参数:有keyword 点击负载我们可以看到这些参数的值,可以看到这个keyword是北京,这就意味着搜索框里面的东西就是keyword由此我们可以得出,这个keyword可以进行动态改变......