要使用 C# 将 PDF 转换为图像,需要使用 LibreOffice 的 UNO API。以下是一个简单的示例代码,它将 PDF 转换为 PNG 图像。

首先,需要安装 LibreOffice 并启用 UNO API。然后,需要添加对 LibreOffice 的 COM 引用。可以在 Visual Studio 中右键单击项目,选择“添加引用”,然后在“COM”选项卡中选择“LibreOffice 7.1 Type Library”。

接下来,需要编写以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using uno.util;
using unoidl.com.sun.star.beans;
using unoidl.com.sun.star.frame;
using unoidl.com.sun.star.lang;
using unoidl.com.sun.star.style;
using unoidl.com.sun.star.text;
using unoidl.com.sun.star.uno;
using unoidl.com.sun.star.view;

namespace PdfToImage
{
    class Program
    {
        static void Main(string[] args)
        {
            const string pdfFile = "input.pdf";
            const string imageFile = "output.png";

            // Create a new LibreOffice instance
            var xLocalContext = uno.util.Bootstrap.bootstrap();
            var xFactory = (XMultiServiceFactory)xLocalContext.getServiceManager();
            var xDesktop = (XComponentLoader)xFactory.createInstance("com.sun.star.frame.Desktop");

            // Load the PDF file
            var xProperties = new PropertyValue[1];
            xProperties[0] = new PropertyValue();
            xProperties[0].Name = "Hidden";
            xProperties[0].Value = new uno.Any(true);
            var xComponent = xDesktop.loadComponentFromURL("file:///" + Path.GetFullPath(pdfFile).Replace("\\", "/"), "_blank", 0, xProperties);

            // Export the first page of the PDF as an image
            var xPageCursor = (XPageCursor)xComponent.getCurrentController();
            xPageCursor.jumpToPage(0);
            var xGraphicProvider = (XGraphicProvider)xComponent.getGraphicProvider();
            var xGraphic = (XGraphic)xGraphicProvider.queryGraphic(new PropertyValue[0], 0, xPageCursor);
            var xExportFilter = (XFilter) xFactory.createInstance("com.sun.star.graphic.GraphicExportFilter");
            var xExportProperties = new PropertyValue[1];
            xExportProperties[0] = new PropertyValue();
            xExportProperties[0].Name = "MimeType";
            xExportProperties[0].Value = new uno.Any("image/png");
            xExportFilter.setSourceGraphic(xGraphic);
            xExportFilter.filter(xExportProperties, new uno.XOutputStreamWrapper(new FileStream(imageFile, FileMode.Create)));

            // Close the LibreOffice instance
            ((XCloseable)xComponent).close(true);
        }
    }
}

代码加载 PDF 文件并将第一页导出为 PNG 图像。输出图像的文件名和路径可以在代码中进行更改

C# 使用 LibreOffice 将pdf 转 图片

原文地址: https://www.cveoy.top/t/topic/f20u 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录