using Aspose.Words.Saving;
using Common.system;
using System;
using System.Collections.Generic;
using System.IO;
namespace XHWK.WKTool.Utils
{
class ZAsposeUtil
{
///
/// 将Word文档转换为图片的方法(该方法基于第三方DLL),
/// 你可以像这样调用该方法: ConvertPDF2Image("F:\\PdfFile.doc", "F:\\","ImageFile", 1, 20);
///
///
/// 图片输出路径,如果为空,默认值为Word所在路径
/// 图片的名字,不需要带扩展名,如果为空,默认值为Word的名称
/// 从PDF文档的第几页开始转换,如果为0,默认值为1
/// 从PDF文档的第几页开始停止转换,如果为0,默认值为Word总页数
/// 设置所需图片格式,如果为null,默认格式为PNG
/// 设置图片的像素,数字越大越清晰,如果为0,默认值为128,建议最大值不要超过1024
public static List ConvertWordToImage
(
string wordInputPath,
string imageOutputPath,
string imageName,
int startPageNum = 0,
int endPageNum = 0,
Aspose.Words.SaveFormat imageFormat = Aspose.Words.SaveFormat.Png,
float resolution = 128
)
{
// 返回的图片绝对路径集合
List images = new List();
try
{
// open word file
Aspose.Words.Document doc = new Aspose.Words.Document(wordInputPath);
// validate parameter
if (doc == null) { throw new Exception("Word文件无效或者Word文件被加密!"); }
if (imageOutputPath.Trim().Length == 0) { imageOutputPath = System.IO.Path.GetDirectoryName(wordInputPath); }
if (!Directory.Exists(imageOutputPath))
{
if (imageOutputPath != null)
{
Directory.CreateDirectory(imageOutputPath);
}
}
if (imageName.Trim().Length == 0) { imageName = System.IO.Path.GetFileNameWithoutExtension(wordInputPath); }
if (startPageNum <= 0) { startPageNum = 1; }
if (endPageNum > doc.PageCount || endPageNum <= 0) { endPageNum = doc.PageCount; }
if (startPageNum > endPageNum)
{
startPageNum = endPageNum;
endPageNum = startPageNum;
}
if (resolution <= 0) { resolution = 128; }
ImageSaveOptions imageSaveOptions = new ImageSaveOptions(imageFormat)
{
Resolution = resolution
};
// start to convert each page
for (int i = startPageNum; i <= endPageNum; i++)
{
imageSaveOptions.PageIndex = i - 1;
if (imageOutputPath != null)
{
string savepath = System.IO.Path.Combine(imageOutputPath, imageName) + "_" + i + "." + imageFormat.ToString();
doc.Save(savepath, imageSaveOptions);
images.Add(savepath);
}
}
}
catch (Exception ex)
{
MessageWindow.Show("该文件无法使用!");
LogHelper.Logerror.Error("【导入方法(ConvertWordToImage)】错误日志:" + ex.Message, ex);
}
return images;
}
}
}