安装依赖
代码语言:javascript复制Install-Package Aspose.Words -Version 19.10.0
Install-Package Aspose.Cells -Version 19.10.0
Install-Package Aspose.Slides.NET -Version 19.10.0
Install-Package Aspose.PDF -Version 19.10.0
添加系统引用
代码语言:javascript复制System.Drawing
Word => PDF/IMG
代码语言:javascript复制using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using Aspose.Words;
using Aspose.Words.Saving;
using Path = System.IO.Path;
namespace document_converter.Utils
{
public class ConverterWord
{
public static void ToPdf(
string sourcePath,
string targetPath
)
{
SetLicense();
Document doc = new Document(sourcePath);
doc.Save(targetPath, SaveFormat.Pdf);
}
/// <summary>
/// 转换为图片
/// </summary>
/// <param name="sourcePath">原路径</param>
/// <param name="targetPath">目标文件夹</param>
/// <param name="startPageNum">开始页面</param>
/// <param name="endPageNum">结束页面</param>
/// <param name="imageFormat">格式</param>
/// <param name="resolution">清晰度</param>
/// <returns></returns>
public static List<string> ToImage(
string sourcePath,
string targetPath,
int startPageNum = 1,
int endPageNum = int.MaxValue,
ImageFormat imageFormat = null,
int resolution = 128
)
{
SetLicense();
string pdfPath = Path.ChangeExtension(sourcePath, "temp");
ToPdf(sourcePath, pdfPath);
var imgList = ConverterPdf.ToImage(pdfPath, targetPath, startPageNum, endPageNum, imageFormat, resolution);
if (File.Exists(pdfPath))
{
File.Delete(pdfPath);
}
return imgList;
}
/// <summary>
/// 转换为图片的方法
/// 你可以像这样调用该方法: ToImage("F:\PdfFile.doc", "F:\ImageFile", 1, 20, ImageFormat.Png, 256);
/// </summary>
/// <param name="sourcePath"></param>
/// <param name="targetPath">
/// 图片输出路径,如果为空,默认值为Word所在路径
/// </param>
/// <param name="startPageNum">
/// 从PDF文档的第几页开始转换,如果为0,默认值为1
/// </param>
/// <param name="endPageNum">
/// 从PDF文档的第几页开始停止转换,如果为0,默认值为Word总页数
/// </param>
/// <param name="imageFormat">
/// 设置所需图片格式,如果为null,默认格式为JPEG
/// </param>
/// <param name="resolution">
/// 设置图片的像素,数字越大越清晰,如果为0,默认值为128,建议最大值不要超过1024
/// </param>
public static List<string> ToImage2(
string sourcePath,
string targetPath,
int startPageNum = 1,
int endPageNum = int.MaxValue,
ImageFormat imageFormat = null,
float resolution = 256
)
{
SetLicense();
string imageName = Path.GetFileNameWithoutExtension(sourcePath).Replace(" ", "");
// 返回的图片绝对路径集合
List<string> images = new List<string>();
try
{
// open word file
Document doc = new Document(sourcePath);
if (targetPath.Trim().Length == 0)
{
targetPath = Path.GetDirectoryName(sourcePath);
}
if (!Directory.Exists(targetPath))
{
if (targetPath != null)
{
Directory.CreateDirectory(targetPath);
}
}
if (startPageNum <= 0)
{
startPageNum = 1;
}
if (endPageNum > doc.PageCount || endPageNum <= 0)
{
endPageNum = doc.PageCount;
}
if (startPageNum > endPageNum)
{
startPageNum = endPageNum;
endPageNum = startPageNum;
}
if (imageFormat == null)
{
imageFormat = ImageFormat.Jpeg;
}
if (resolution <= 0)
{
resolution = 128;
}
ImageSaveOptions imageSaveOptions = new ImageSaveOptions(GetSaveFormat(imageFormat))
{
Resolution = resolution
};
// start to convert each page
for (int i = startPageNum; i <= endPageNum; i )
{
imageSaveOptions.PageIndex = i - 1;
if (targetPath != null)
{
string pathAll = Path.Combine(
targetPath,
imageName "_" i "." imageFormat.ToString().ToLower()
);
doc.Save(
pathAll,
imageSaveOptions
);
images.Add(pathAll);
}
}
}
catch (Exception ex)
{
throw new Exception(
"The document appears to be corrupted and cannot be loaded.".Equals(ex.Message)
? "文件似乎已损坏,无法加载。"
: "文件被占用请关闭后重新导入"
);
}
return images;
}
private static void SetLicense()
{
new License()
.SetLicense(
new MemoryStream(
Convert.FromBase64String(
"PExpY2Vuc2U CiAgPERhdGE CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8 CiAgICA8TGljZW5zZVR5cGU RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU CiAgICA8TGljZW5zZU5vdGU TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU CiAgICA8T3JkZXJJRD4xOTA4MjYwODA3NTM8L09yZGVySUQ CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI M2U0NGRlMzAtZmNkMi00MTA2LWIzNWQtNDZjNmEzNzE1ZmMyPC9TZXJpYWxOdW1iZXI CiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwMjAwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk CiAgICA8TGljZW5zZVZlcnNpb24 My4wPC9MaWNlbnNlVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE CiAgPFNpZ25hdHVyZT53UGJtNUt3ZTYvRFZXWFNIY1o4d2FiVEFQQXlSR0pEOGI3L00zVkV4YWZpQnd5U2h3YWtrNGI5N2c2eGtnTjhtbUFGY3J0c0cwd1ZDcnp6MytVYk9iQjRYUndTZWxsTFdXeXNDL0haTDNpN01SMC9jZUFxaVZFOU0rWndOQkR4RnlRbE9uYTFQajhQMzhzR1grQ3ZsemJLZFZPZXk1S3A2dDN5c0dqYWtaL1E9PC9TaWduYXR1cmU CjwvTGljZW5zZT4=")
)
);
}
private static SaveFormat GetSaveFormat(ImageFormat imageFormat)
{
SaveFormat sf;
if (imageFormat.Equals(ImageFormat.Png))
{
sf = SaveFormat.Png;
}
else if (imageFormat.Equals(ImageFormat.Jpeg))
{
sf = SaveFormat.Jpeg;
}
else if (imageFormat.Equals(ImageFormat.Tiff))
{
sf = SaveFormat.Tiff;
}
else if (imageFormat.Equals(ImageFormat.Bmp))
{
sf = SaveFormat.Bmp;
}
else
{
sf = SaveFormat.Unknown;
}
return sf;
}
}
}
Excel => PDF/IMG
代码语言:javascript复制using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using Aspose.Cells;
namespace document_converter.Utils
{
public class ConverterExcel
{
/// <summary>
/// 转换为PDF
/// </summary>
/// <param name="sourcePath">原路径</param>
/// <param name="targetPath">目标路径</param>
public static void ToPdf(
string sourcePath,
string targetPath
)
{
SetLicense();
// 创建 Workbook 对象并加载 Excel 文件
using (Workbook workbook = new Workbook(sourcePath))
{
// 创建 PDF 保存选项
PdfSaveOptions options = new PdfSaveOptions();
// 将 Workbook 保存为 PDF 文件
workbook.Save(targetPath, options);
}
}
/// <summary>
/// 转换为图片
/// </summary>
/// <param name="sourcePath">原路径</param>
/// <param name="targetPath">目标文件夹</param>
/// <param name="startPageNum">开始页面</param>
/// <param name="endPageNum">结束页面</param>
/// <param name="imageFormat">格式</param>
/// <param name="resolution">清晰度</param>
/// <returns></returns>
public static List<string> ToImage(
string sourcePath,
string targetPath,
int startPageNum = 1,
int endPageNum = int.MaxValue,
ImageFormat imageFormat = null,
int resolution = 128
)
{
SetLicense();
string pdfPath = Path.ChangeExtension(sourcePath, "temp");
ToPdf(sourcePath, pdfPath);
var imgList = ConverterPdf.ToImage(pdfPath, targetPath, startPageNum, endPageNum, imageFormat, resolution);
if (File.Exists(pdfPath))
{
File.Delete(pdfPath);
}
return imgList;
}
private static void SetLicense()
{
new License()
.SetLicense(
new MemoryStream(
Convert.FromBase64String(
"PExpY2Vuc2U CiAgPERhdGE CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8 CiAgICA8TGljZW5zZVR5cGU RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU CiAgICA8TGljZW5zZU5vdGU TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU CiAgICA8T3JkZXJJRD4xOTA4MjYwODA3NTM8L09yZGVySUQ CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI M2U0NGRlMzAtZmNkMi00MTA2LWIzNWQtNDZjNmEzNzE1ZmMyPC9TZXJpYWxOdW1iZXI CiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwMjAwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk CiAgICA8TGljZW5zZVZlcnNpb24 My4wPC9MaWNlbnNlVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE CiAgPFNpZ25hdHVyZT53UGJtNUt3ZTYvRFZXWFNIY1o4d2FiVEFQQXlSR0pEOGI3L00zVkV4YWZpQnd5U2h3YWtrNGI5N2c2eGtnTjhtbUFGY3J0c0cwd1ZDcnp6MytVYk9iQjRYUndTZWxsTFdXeXNDL0haTDNpN01SMC9jZUFxaVZFOU0rWndOQkR4RnlRbE9uYTFQajhQMzhzR1grQ3ZsemJLZFZPZXk1S3A2dDN5c0dqYWtaL1E9PC9TaWduYXR1cmU CjwvTGljZW5zZT4=")
)
);
}
}
}
PPT => PDF/IMG
代码语言:javascript复制using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using Aspose.Slides;
namespace document_converter.Utils
{
public class ConverterPpt
{
/// <summary>
/// 转换为PDF
/// </summary>
/// <param name="sourcePath">原路径</param>
/// <param name="targetPath">目标路径</param>
public static void ToPdf(
string sourcePath,
string targetPath
)
{
SetLicense();
using (var presentation = new Presentation(sourcePath))
{
// 保存为PDF文件
presentation.Save(targetPath, Aspose.Slides.Export.SaveFormat.Pdf);
}
}
/// <summary>
/// 转换为图片
/// </summary>
/// <param name="sourcePath">原路径</param>
/// <param name="targetPath">目标文件夹</param>
/// <param name="startPageNum">开始页面</param>
/// <param name="endPageNum">结束页面</param>
/// <param name="imageFormat">格式</param>
/// <param name="resolution">清晰度</param>
/// <returns></returns>
public static List<string> ToImage(
string sourcePath,
string targetPath,
int startPageNum = 1,
int endPageNum = int.MaxValue,
ImageFormat imageFormat = null,
int resolution = 128
)
{
SetLicense();
string pdfPath = Path.ChangeExtension(sourcePath, "temp");
ToPdf(sourcePath, pdfPath);
var imgList = ConverterPdf.ToImage(pdfPath, targetPath, startPageNum, endPageNum, imageFormat, resolution);
if (File.Exists(pdfPath))
{
File.Delete(pdfPath);
}
return imgList;
}
private static void SetLicense()
{
new License()
.SetLicense(
new MemoryStream(
Convert.FromBase64String(
"PExpY2Vuc2U CiAgPERhdGE CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8 CiAgICA8TGljZW5zZVR5cGU RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU CiAgICA8TGljZW5zZU5vdGU TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU CiAgICA8T3JkZXJJRD4xOTA4MjYwODA3NTM8L09yZGVySUQ CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI M2U0NGRlMzAtZmNkMi00MTA2LWIzNWQtNDZjNmEzNzE1ZmMyPC9TZXJpYWxOdW1iZXI CiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwMjAwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk CiAgICA8TGljZW5zZVZlcnNpb24 My4wPC9MaWNlbnNlVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE CiAgPFNpZ25hdHVyZT53UGJtNUt3ZTYvRFZXWFNIY1o4d2FiVEFQQXlSR0pEOGI3L00zVkV4YWZpQnd5U2h3YWtrNGI5N2c2eGtnTjhtbUFGY3J0c0cwd1ZDcnp6MytVYk9iQjRYUndTZWxsTFdXeXNDL0haTDNpN01SMC9jZUFxaVZFOU0rWndOQkR4RnlRbE9uYTFQajhQMzhzR1grQ3ZsemJLZFZPZXk1S3A2dDN5c0dqYWtaL1E9PC9TaWduYXR1cmU CjwvTGljZW5zZT4=")
)
);
}
}
}
PDF => IMG
使用Aspose.PDF
代码语言:javascript复制using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using Aspose.Pdf;
using Aspose.Pdf.Devices;
namespace document_converter.Utils
{
public class ConverterPdf
{
/// <summary>
/// 转换为图片的方法
/// 你可以像这样调用该方法: ToImage("D:\PdfFile.pdf", "D:\ImageFile", 1, 20, ImageFormat.Png, 256);
/// </summary>
/// <param name="sourcePath"></param>
/// <param name="targetPath">
/// 图片输出路径,如果为空,默认值为Word所在路径
/// </param>
/// <param name="startPageNum">
/// 从PDF文档的第几页开始转换,如果为0,默认值为1
/// </param>
/// <param name="endPageNum">
/// 从PDF文档的第几页开始停止转换,如果为0,默认值为Word总页数
/// </param>
/// <param name="imageFormat">
/// 设置所需图片格式,如果为null,默认格式为JPEG
/// </param>
/// <param name="resolution">
/// 设置图片的像素,数字越大越清晰,如果为0,默认值为128,建议最大值不要超过1024
/// </param>
public static List<string> ToImage(
string sourcePath,
string targetPath,
int startPageNum = 1,
int endPageNum = int.MaxValue,
ImageFormat imageFormat = null,
int resolution = 128
)
{
SetLicense();
string imageName = Path.GetFileNameWithoutExtension(sourcePath).Replace(" ", "");
// 返回的图片绝对路径集合
List<string> images = new List<string>();
try
{
if (!Directory.Exists(targetPath))
{
if (targetPath != null)
{
Directory.CreateDirectory(targetPath);
}
}
using (var pdfDocument = new Document(sourcePath))
{
if (startPageNum <= 0)
{
startPageNum = 1;
}
if (endPageNum > pdfDocument.Pages.Count || endPageNum <= 0)
{
endPageNum = pdfDocument.Pages.Count;
}
if (startPageNum > endPageNum)
{
startPageNum = endPageNum;
endPageNum = startPageNum;
}
if (imageFormat == null)
{
imageFormat = ImageFormat.Jpeg;
}
if (resolution <= 0)
{
resolution = 128;
}
for (int i = startPageNum; i <= endPageNum; i )
{
using (var imageStream = new MemoryStream())
{
var jpegDevice = new JpegDevice(new Resolution(resolution), 100);
jpegDevice.Process(pdfDocument.Pages[i], imageStream);
imageStream.Position = 0;
using (var image = new Bitmap(imageStream))
{
if (targetPath == null) continue;
string pathAll = Path.Combine(
targetPath,
imageName "_" i "." imageFormat.ToString().ToLower()
);
images.Add(pathAll);
image.Save(pathAll, imageFormat);
}
}
}
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return images;
}
private static void SetLicense()
{
new License()
.SetLicense(
new MemoryStream(
Convert.FromBase64String(
"PExpY2Vuc2U CiAgPERhdGE CiAgICA8TGljZW5zZWRUbz5TdXpob3UgQXVuYm94IFNvZnR3YXJlIENvLiwgTHRkLjwvTGljZW5zZWRUbz4KICAgIDxFbWFpbFRvPnNhbGVzQGF1bnRlYy5jb208L0VtYWlsVG8 CiAgICA8TGljZW5zZVR5cGU RGV2ZWxvcGVyIE9FTTwvTGljZW5zZVR5cGU CiAgICA8TGljZW5zZU5vdGU TGltaXRlZCB0byAxIGRldmVsb3BlciwgdW5saW1pdGVkIHBoeXNpY2FsIGxvY2F0aW9uczwvTGljZW5zZU5vdGU CiAgICA8T3JkZXJJRD4xOTA4MjYwODA3NTM8L09yZGVySUQ CiAgICA8VXNlcklEPjEzNDk3NjAwNjwvVXNlcklEPgogICAgPE9FTT5UaGlzIGlzIGEgcmVkaXN0cmlidXRhYmxlIGxpY2Vuc2U8L09FTT4KICAgIDxQcm9kdWN0cz4KICAgICAgPFByb2R1Y3Q QXNwb3NlLlRvdGFsIGZvciAuTkVUPC9Qcm9kdWN0PgogICAgPC9Qcm9kdWN0cz4KICAgIDxFZGl0aW9uVHlwZT5FbnRlcnByaXNlPC9FZGl0aW9uVHlwZT4KICAgIDxTZXJpYWxOdW1iZXI M2U0NGRlMzAtZmNkMi00MTA2LWIzNWQtNDZjNmEzNzE1ZmMyPC9TZXJpYWxOdW1iZXI CiAgICA8U3Vic2NyaXB0aW9uRXhwaXJ5PjIwMjAwODI3PC9TdWJzY3JpcHRpb25FeHBpcnk CiAgICA8TGljZW5zZVZlcnNpb24 My4wPC9MaWNlbnNlVmVyc2lvbj4KICAgIDxMaWNlbnNlSW5zdHJ1Y3Rpb25zPmh0dHBzOi8vcHVyY2hhc2UuYXNwb3NlLmNvbS9wb2xpY2llcy91c2UtbGljZW5zZTwvTGljZW5zZUluc3RydWN0aW9ucz4KICA8L0RhdGE CiAgPFNpZ25hdHVyZT53UGJtNUt3ZTYvRFZXWFNIY1o4d2FiVEFQQXlSR0pEOGI3L00zVkV4YWZpQnd5U2h3YWtrNGI5N2c2eGtnTjhtbUFGY3J0c0cwd1ZDcnp6MytVYk9iQjRYUndTZWxsTFdXeXNDL0haTDNpN01SMC9jZUFxaVZFOU0rWndOQkR4RnlRbE9uYTFQajhQMzhzR1grQ3ZsemJLZFZPZXk1S3A2dDN5c0dqYWtaL1E9PC9TaWduYXR1cmU CjwvTGljZW5zZT4=")
)
);
}
}
}
使用O2S.Components.PDFRender4NET
代码语言:javascript复制using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using O2S.Components.PDFRender4NET;
namespace document_converter.Utils
{
public class ConverterPdf
{
public enum Definition
{
Low = 2,
Standard = 3,
High = 5,
SuperHigh = 8,
UltraHigh = 10
}
/// <summary>
/// 获取PDF的页数
/// </summary>
/// <param name="pdfInputPath"></param>
/// <returns></returns>
public static int GetPageNum(string pdfInputPath)
{
PDFFile pdfFile = PDFFile.Open(pdfInputPath);
return pdfFile.PageCount;
}
/// <summary>
/// 将PDF文档转换为图片的方法
/// </summary>
/// <param name="pdfInputPath">PDF文件路径</param>
/// <param name="imageOutputPath">图片输出路径</param>
/// <param name="startPageNum">从PDF文档的第几页开始转换</param>
/// <param name="endPageNum">从PDF文档的第几页开始停止转换</param>
/// <param name="imageFormat">设置所需图片格式</param>
/// <param name="definition">设置图片的清晰度,数字越大越清晰</param>
public static List<string> ToImage(
string pdfInputPath,
string imageOutputPath,
int startPageNum = 1,
int endPageNum = int.MaxValue,
ImageFormat imageFormat = null,
Definition definition = Definition.Standard
)
{
Console.WriteLine($@"Converting: [{pdfInputPath}] -> [{imageOutputPath}]");
List<string> imgList = new List<string>();
string imageName = "pdfimg";
if (imageFormat == null)
{
imageFormat = ImageFormat.Jpeg;
}
PDFFile pdfFile = PDFFile.Open(pdfInputPath);
if (!Directory.Exists(imageOutputPath))
{
Directory.CreateDirectory(imageOutputPath);
}
if (startPageNum <= 0)
{
startPageNum = 1;
}
if (endPageNum > pdfFile.PageCount)
{
endPageNum = pdfFile.PageCount;
}
if (startPageNum > endPageNum)
{
startPageNum = endPageNum;
endPageNum = startPageNum;
}
for (int i = startPageNum; i <= endPageNum; i )
{
Bitmap pageImage = pdfFile.GetPageImage(i - 1, 56 * (int)definition);
string filePath = imageOutputPath imageName i "." imageFormat.ToString().ToLower();
imgList.Add(filePath);
pageImage.Save(filePath, imageFormat);
pageImage.Dispose();
}
pdfFile.Dispose();
return imgList;
}
}
}
调用
完整代码
https://gitee.com/psvmc/document-converter.git
返回码
- 0 转换成功
- 1 转换失败
- 2 格式不支持
- 3 文件不存在
转为PDF
Word => PDF
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\01.docx" "D:\Tools\Docs\pdf\01.pdf"
document-converter.exe pdf "D:\Tools\Docs\01.doc" "D:\Tools\Docs\pdf\01.pdf"
PPT => PDF
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\02.pptx" "D:\Tools\Docs\pdf\02.pdf"
缺少字体文档测试
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\more\第一节 导数的概念及运算 定积分.ppt" "D:\Tools\Docs\pdf\第一节 导数的概念及运算 定积分.pdf"
Excel => PDF
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\03.xlsx" "D:\Tools\Docs\pdf\03.pdf"
TXT => PDF
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\04.txt" "D:\Tools\Docs\pdf\04.pdf"
XML => PDF
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\05.xml" "D:\Tools\Docs\pdf\05.pdf"
HTML => PDF
代码语言:javascript复制document-converter.exe pdf "D:\Tools\Docs\06.html" "D:\Tools\Docs\pdf\06.pdf"
转为图片
PDF => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\pdf\01.pdf" "D:\Tools\Docs\images\pdf\"
Word => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\01.docx" "D:\Tools\Docs\images\word\"
PPT => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\02.pptx" "D:\Tools\Docs\images\ppt\"
Excel => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\03.xlsx" "D:\Tools\Docs\images\excel\"
TXT => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\04.txt" "D:\Tools\Docs\images\txt\"
XML => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\05.xml" "D:\Tools\Docs\images\xml\"
HTML => IMG
代码语言:javascript复制document-converter.exe img "D:\Tools\Docs\06.html" "D:\Tools\Docs\images\html\"
Aspose.PDF和O2S.Components.PDFRender4NET
Aspose.PDF是一个用于处理PDF文件的强大工具,它提供了一系列的功能,包括:
- 创建和编辑PDF文件:可以使用Aspose.PDF创建新的PDF文档、编辑和修改现有的PDF文档。
- 将PDF文件转换为其他格式:将PDF文件转换为多种文件格式,包括DOC、DOCX、HTML、XML、PPT和XPS等。
- 添加水印和加密:可以在PDF文档中添加水印、数字签名和加密等安全特性。
- 表单处理:用于创建、填写和提交PDF表单。
- 文本和图像处理:可以从PDF文档中提取文本和图像,还可以在文档中插入、更新和删除文本和图像等。
- 页面元素处理:可以在PDF页面上添加、更新、删除和移动页面元素,如链接、书签、注释、标签和旋转等。
总之,Aspose.PDF提供了广泛的功能,能够满足用户处理PDF文件的各种需求。
Aspose.PDF功能比较多所以文件比较大,有32.9M。 O2S.Components.PDFRender4NET在转图片上效果也不错,大小只有944K,还不到1M,推荐使用。
在网上看的
O2S.Components.PDFRender4NET依赖Ghostscript软件来渲染PDF文件。
但是实际测试的时候并不用安装Ghostscript,也能转换成功。