.NET 跨平台图像处理框架 - gif 打印到 pdf 中

2023年10月17日 715点热度 0人点赞 0条评论
内容纲要

ImageMagick 是一个强大的图像处理库,支持100多种主要的文件格式(不包括子格式)。使用 Magick.NET,你可以在 c #/vb.net/. net Core 应用程序中使用 ImageMagick,而无需在服务器或桌面上安装 ImageMagick。

项目地址:https://github.com/dlemstra/Magick.NET

笔者推荐的原因除了其跨平台、开源,还要我其 API 简单好用。
nuget 搜索 ImageMagick 即可引用。

using ImageMagick;
using Microsoft.IO;
using PdfSharp.Drawing;
using PdfSharp.Fonts;
using PdfSharp.Pdf;
using PdfSharp.Snippets.Font;

namespace ConsoleAppTest
{
    internal class Program
    {
        private static readonly RecyclableMemoryStreamManager MemoryManager = new();
        static async Task Main()
        {
            var document = new PdfDocument();
            document.Info.Title = "标题测试";
            document.Info.Subject = "测试";

            // 插入一个页面
            PdfPage page = document.AddPage();
            XGraphics gfx = XGraphics.FromPdfPage(page);

            // 加载 gif 文件
            using var image = new MagickImage(File.Open("D:/a.gif", FileMode.Open));

            // 转换后存储 png 到内存中
            var memoryStream = MemoryManager.GetStream();
            image.Write(memoryStream,MagickFormat.Png);

            // 重置流指针为开头位置
            memoryStream.Seek(0, SeekOrigin.Begin);
            XImage img = XImage.FromStream(memoryStream);

            // 图像绘制在页面的哪个位置,坐标 0,0
            gfx.DrawImage(img, new XPoint(0, 0));

            var filename = "new.pdf";
            document.Save(filename);
        }
    }

PdfSharp 的使用请参考:https://www.whuanle.cn/archives/21233

gif 文件:

打印到 pdf 中:

file

痴者工良

高级程序员劝退师

文章评论