[C#] [Office文档操作] Aspose 实现批量Word转PDF,PDF删页与合并(提供破解插件链接)

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42015762/article/details/84650025

目录

1.Intro

2.Details

3.Theory

4.Environment

5.Source

Word转PdF:

PDF删页

PDF合并

6.Conclusion


1.Intro

又是周一,一如既往的起晚,一如既往的萎靡,一如既往的神游,叼着烟颤颤抖抖走到了办公室,咦?没人??一看时间8:20了,一般来说如果这个点办公室没人话,很可能一整天都没有人!!就可以愉快的摸鱼了!!!!

西卡西,随着空气的流动,感觉到附近一阵异样,突然有个大妹子闪现到我身后的绝对领域,准备gank我,然而我根本就是毫无破绽,大眼珠子就快要贴到屏幕上了,品味着黑轴机械敲击带来的快感,是的,我就快高潮了!

一声尖锐的声音响起:“爷,给写个工具呗~”

我故作高冷:“毛烦。”

“我们那几千个文件要处理,您看您手一抬就帮我们解决了可能是困扰一生的问题,您多厉害”

我宠辱不惊:“咳,怎么个处理法...”

“简单,就是批量Word转PDF,再删几页PDF,最后合并成一个文件,简单~”

我:“那买个工具不完了”

“没钱。”

我:“哦....”

就这样,搞完破解之后,我又从一个地信开发的变成了搞Office的,天天不务正业说的就是本猿。


2.Details

说起来Doc转Pdf,直接在Word里就可以实现,但是要批量转的话,网上的很多软件不是要收费就是限制了转的次数,后来找了许多相关类库,比如Spire、Office、iText等等,不是有水印的就是试用版的(次数限制,真他妈鸡贼),要不就是版本很老(转了出问题或者不能转docx),要不就是要收很多积分(本站...一个小小的动态链接库,你要我5个积分??),或者像Office的类库,电脑上还要装Office才行,那装WPS的是不是还要再装个Office?麻烦。

而操作PDF的类库也有这种问题,比如Acrobat组件,还要装Adobe Acrobat的软件才能用。

受开源的影响比较大,本着一切皆免费的思想,在网上找了一天(真实一天),终于下到了一套比较新的可以操作Word和PDF的破解版无水印dll——Aspose!

测试过了,Aspose.Words可以完美的转doc和docx为pdf,而Aspose.Pdf可以对PDF进行操作和编辑,完全脱离Office环境也可以,并且没有水印,没有转换次数的限制。


3.Theory

具体的介绍可以看这个:

一个疯狂弹广告的网站:https://www.evget.com/article/2018/11/6/28785.html

官方帮助文档:https://docs.aspose.com/display/wordsnet/Home

 


4.Environment

Environment:Windows All

Language:C#

IDE:Visual Studio 2012


5.Source

Word转PdF:

/// <summary>
/// Word转Pdf核心函数
/// </summary>
/// <param name="files_Path">存储多个文件全路径的列表</param>
/// <param name="success_convert_num">输出转换成功数</param>
/// <param name="failed_convert_num">输出转换失败数</param>
/// <param name="error_files_path">输出转换错误文件和错误原因</param>
/// <param name="pdf_paths">输出PDF文档路径的列表</param>
private void wordToPdf(List<string> files_Path, out int success_convert_num, out int failed_convert_num, out Dictionary<string, string> error_files_path, out List<string> pdf_paths)
{
   // 用于存储转换失败的文件全路径和失败原因的字典
   error_files_path = new Dictionary<string, string>();
   // 转换成功的文件数
   success_convert_num = 0;
   // 转换失败的文件数
   failed_convert_num = 0;


   // 遍历转换文件
   foreach (string file_Path in files_Path)
   {
       try
       {
           if (File.Exists(file_Path))
           {
               //读取doc文档
               Aspose.Words.Document doc = new Aspose.Words.Document(file_Path);
               // 文件名
               string file_name = file_Path.Substring(file_Path.LastIndexOf("\\") + 1, (file_Path.LastIndexOf(".") - file_Path.LastIndexOf("\\") - 1)); //文件名 
               // 文件路径
               string path = Path.GetDirectoryName(file_Path).ToString();
               // 新全路径
               string pdf_file_path = path + "\\" + file_name + ".pdf";

               // ------转换核心方法------
               // 保存为PDF文件,此处枚举的SaveFormat支持很多种格式输出,如图片,epub,rtf 等
               doc.Save(pdf_file_path, Aspose.Words.SaveFormat.Pdf);
               // -----------------------

               pdf_paths.Add(pdf_file_path);
               success_convert_num++;
           }
           else
           {
               error_files_path[file_Path] = "文件不存在";
               failed_convert_num++;
           }
      }
      catch (Exception ex)
      {
           error_files_path[file_Path] = ex.ToString();
           failed_convert_num++;
      }
   }         
}

PDF删页

/// <summary>
/// PDF删除页操作
/// </summary>
/// <param name="pdf_path">PDF文档路径</param>
/// <param name="start_delete_page">删除的起始页码</param>
private void pdfDelete(string pdf_path, int start_delete_page)
{
    // 初始化PDF文档
    Aspose.Pdf.Document pdfDoc = new Aspose.Pdf.Document(pdf_path);
    // PDF文档页数
    int page_Count = pdfDoc.Pages.Count;
    // 存储要删除的页码
    List<int> list_page_nums = new List<int>();
    for (int i = start_delete_page; i <= page_Count; i++)
    {
        list_page_nums.Add(i);
    }
    int[] page_nums = list_page_nums.ToArray();
    // 删除页码并保存
    pdfDoc.Pages.Delete(page_nums);  
    pdfDoc.Save(pdf_path);  
}

PDF合并

/// <summary>
/// PDF合并
/// </summary>
/// <param name="pdf_Path">PDF文档路径列表</param>
/// <param name="merge_save_path">输出合并的PDF路径</param>
private void pdfMerge(List<string> pdf_Path, string merge_save_path)
{  
    Aspose.Pdf.Document a = new Aspose.Pdf.Document();
    //遍历路径列表,获取该路径下所有PDF文件的路径
    foreach (string path in pdf_Path)
    {
        Aspose.Pdf.Document b = new Aspose.Pdf.Document(path);
        a.Pages.Add(b.Pages);
    }
    a.Save(merge_save_path);
}

6.Conclusion

Aspose.Words && Apose.Pdf 17.x无水印破解版

百度网盘链接:https://pan.baidu.com/s/1N-t-cp4Kj8kHxKOFl0qBLw 

提取码:1i6z

 

展开阅读全文

没有更多推荐了,返回首页