itext7 pdf转图片

https://github.com/thombrink/itext7.pdfimage

新建asp.net core8项目,安装itext7和system.drawing.common

引入itext.pdfimage核心代码

imageListener下有一段不安全的代码

cs 复制代码
  unsafe
  {
      for (int y = 0; y < image.Height; y++)
      {
          byte* ptrMask = (byte*)bitsMask.Scan0 + y * bitsMask.Stride;
          byte* ptrInput = (byte*)bitsInput.Scan0 + y * bitsInput.Stride;
          byte* ptrOutput = (byte*)bitsOutput.Scan0 + y * bitsOutput.Stride;
          for (int x = 0; x < image.Width; x++)
          {
              ptrOutput[4 * x] = ptrInput[4 * x];           // blue
              ptrOutput[4 * x + 1] = ptrInput[4 * x + 1];   // green
              ptrOutput[4 * x + 2] = ptrInput[4 * x + 2];   // red
              ptrOutput[4 * x + 3] = ptrMask[4 * x];        // alpha
          }
      }
  }

修改为安全代码

cs 复制代码
// 遍历每一行  
for (int y = 0; y < image.Height; y++)  
{  
    // 计算每行的起始字节位置  
    int scanOffsetInput = y * bitsInput.Stride;  
    int scanOffsetMask = y * bitsMask.Stride;  
    int scanOffsetOutput = y * bitsOutput.Stride;  

    // 获取当前行的字节数组  
    byte[] scanlineInput = new byte[bitsInput.Stride];  
    byte[] scanlineMask = new byte[bitsMask.Stride];
    byte[] scanlineOutput = new byte[bitsOutput.Stride];
    Marshal.Copy(bitsInput.Scan0 + scanOffsetInput, scanlineInput, 0, scanlineInput.Length);  
    Marshal.Copy(bitsMask.Scan0 + scanOffsetMask, scanlineMask, 0, scanlineMask.Length);  

    // 遍历每一列(或每一像素)  
    for (int x = 0; x < image.Width; x++)  
    {  
        // 计算当前像素在字节数组中的位置(基于每个像素4个字节)  
        int pixelOffsetInput = x * 4;  
        int pixelOffsetMask = x * 4;  
        int pixelOffsetOutput = x * 4;  

        // 读取输入图像的RGB值  
        byte blue = scanlineInput[pixelOffsetInput];  
        byte green = scanlineInput[pixelOffsetInput + 1];  
        byte red = scanlineInput[pixelOffsetInput + 2];  

        // 读取遮罩图像的alpha值  
        byte alpha = scanlineMask[pixelOffsetMask];  

        // 将值写入输出图像的对应位置  
        scanlineOutput[pixelOffsetOutput] = blue;  
        scanlineOutput[pixelOffsetOutput + 1] = green;  
        scanlineOutput[pixelOffsetOutput + 2] = red;  
        scanlineOutput[pixelOffsetOutput + 3] = alpha;  
    }  

    // 将处理过的行复制回输出图像的BitmapData中  
    Marshal.Copy(scanlineOutput, 0, bitsOutput.Scan0 + scanOffsetOutput, scanlineOutput.Length);  
}  

调用

cs 复制代码
using System.Drawing.Imaging;
using iText.Kernel.Pdf;
using itext.pdfimage.Extensions;

namespace pdf2image02;

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Start Bliep");
        var pdfPath = "D:\\ChatFiles\\WechatWorkFile\\WXWork\\1688853272898895\\Cache\\File\\2024-04\\wave.pdf";

        var pdf = File.Open(pdfPath, FileMode.Open);

        var reader = new PdfReader(pdf);
        var pdfDocument = new PdfDocument(reader);
        var bitmaps = pdfDocument.ConvertToBitmaps();

        foreach (var bitmap in bitmaps)
        {
            bitmap.Save(Path.Combine("F:\\Desktop\\test\\aa", $"wave-{DateTime.Now.Ticks}.png"), ImageFormat.Png);
            bitmap.Dispose();
        }

        var page1 = pdfDocument.GetPage(1);
        var bitmap1 = page1.ConvertPageToBitmap();
        bitmap1.Save(Path.Combine("F:\\Desktop\\test\\aa", $"wave-page1-{DateTime.Now.Ticks}.png"), ImageFormat.Png);
        bitmap1.Dispose();

        Console.WriteLine("End Bliep!");
    }
}
相关推荐
2501_929382653 小时前
MobiOffice解锁高级功能版 v15.9.57971 安卓手机doc, docx ppt, .pptx pdf办公软件
智能手机·pdf·powerpoint·wps
CodeCraft Studio10 小时前
国产化PDF处理控件Spire.PDF教程:如何在 C# 中从 HTML 和 PDF 模板生成 PDF
pdf·c#·html·.net·spire.pdf·pdf文档开发·html创建模板pdf
E_ICEBLUE16 小时前
高效压缩 PDF 文件大小(3 大实用的 Python 库)
python·pdf
技术钱1 天前
vue3 封装图片上传预览组件支持docx、excel、pdf、图片、txt格式
vue.js·pdf·excel
xingxing_F1 天前
PDF Protector for mac PDF文档加密解密工具
macos·pdf
985小水博一枚呀1 天前
【AI大模型学习路线】第三阶段之RAG与LangChain——第十九章(实战基于Advanced RAG的PDF问答)系统部署与测试?
人工智能·学习·langchain·pdf
励志成为美貌才华为一体的女子1 天前
本地用docling实现pdf转markdown操作笔记
笔记·pdf
星空的资源小屋1 天前
RoboIntern,一款自动化办公小助手
运维·人工智能·pdf·自动化·电脑·excel
mucheni2 天前
迅为RK3568开发板OpenHarmony系统南向驱动开发手册-pdf配置 rk3568_uart_config.hcs
驱动开发·pdf
ONLYOFFICE2 天前
ONLYOFFICE 桌面编辑器9.1版本已发布:PDF密文功能和全新注释、工作表公式优化及文件恢复便捷化等
pdf·编辑器·onlyoffice 模板