C# 使用 LibreOffice 将pdf 转 图片
要使用 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 图像。输出图像的文件名和路径可以在代码中进行更改
原文地址: https://www.cveoy.top/t/topic/f20u 著作权归作者所有。请勿转载和采集!