c#对文档(doc、xls、pdf)的操作的终极dll(sprie.dll,aspose.dll,itextsharp.dll)

1 篇文章 0 订阅
1 篇文章 0 订阅

c#对文档(doc、xls、pdf)的操作的终极dll(sprie.dll,aspose.dll,itextsharp.dll)

(1)通常处理文档我们都是调用office相应的dll,没有水印效果也很好,但是缺点也很多。

  1. 其一电脑必须安装和开发相应版本的office,安装了其他版本的office或者wps之后出现excel异常来自 HRESULT:0x800A0****问题,很难解决;
  2. 其二代码中经常因为想用的exe进程没有合理关闭导出写的方法没有执行;
  3. 其三电脑必须安装office。

(2)采用sprie.dll,aspose.dll相应的doc、xls、pdf文档,无需安装office软件而且封装了很多好用的方法直接调用,但是这两种dll处理文档由于没有破解不完整转为pdf时存在水印,需要去除水印。如何去除每一个文档的头部水印或者末页水印:使用空白图片遮挡头部处理头部有水印的pdf,采用itextsharp.dll处理pdf文件没有水印的办法舍去末页有水印的pdf,从未完美解决水印问题。

去除头部水印代码

  /// <summary>
        /// 遮挡Spire.xls转pdf之后的头部水印
        /// </summary>
        /// <param name="src">有水印的pdf文件</param>
        /// <param name="dest">消除水印后pdf文件</param>
        public static void CoverUpWaterMark(string srcpdf, string destpdf)
        {
            PdfReader reader = new PdfReader(srcpdf);
            int n = reader.NumberOfPages;
            iTextSharp.text.Rectangle psize = reader.GetPageSize(1);
            float width = psize.Width;
            float height = psize.Height;
            iTextSharp.text.Document document = new iTextSharp.text.Document(psize, 30, 30, 30, 30);
            PdfWriter writer = PdfWriter.GetInstance(document, new FileStream(destpdf, FileMode.Create));
            document.Open();
          
            PdfContentByte cb = writer.DirectContent;
            for (int i = 1; i <= n; i++)
            {
                document.NewPage();
                PdfImportedPage  page1 = writer.GetImportedPage(reader, i);
                cb.AddTemplate(page1, 0, 0);
                string kb = AppDomain.CurrentDomain.BaseDirectory + "kb.png";
                if (File.Exists(kb))
                {
                    iTextSharp.text.Image img = iTextSharp.text.Image.GetInstance(kb);
                    img.ScaleAbsolute(img.Width / 2, img.Height / 2);
                    img.SetAbsolutePosition(7, height - 25);
                    cb.AddImage(img);
                }
            }
            writer.Flush();
            document.Close();
        }

去除最后一页水印代码

   /// <summary>
        /// 已有pdf中拷贝指定的页码范围到一个新的pdf文件中
        /// </summary>
        /// <param name="sourcePdfPath">源pdf文件</param>
        /// <param name="outputPdfPath">目标pdf文件</param>
        /// <param name="startPage">开始页</param>
        /// <param name="endPage">结束页</param>
        public static void ExtractPages(string sourcePdfPath, string outputPdfPath, int startPage, int endPage)
        {
            PdfReader reader = null;
            Document sourceDocument = null;
            PdfCopy pdfCopyProvider = null;
            PdfImportedPage importedPage = null;
            try
            {
                reader = new PdfReader(sourcePdfPath);
                sourceDocument = new Document(reader.GetPageSizeWithRotation(startPage));
                pdfCopyProvider = new PdfCopy(sourceDocument, new System.IO.FileStream(outputPdfPath, System.IO.FileMode.Create));
                sourceDocument.Open();
                for (int i = startPage; i <= endPage; i++)
                {
                    importedPage = pdfCopyProvider.GetImportedPage(reader, i);
                    pdfCopyProvider.AddPage(importedPage);
                }
                sourceDocument.Close();
                reader.Close();
            }
            catch (Exception ex) { throw ex; }
        }

需要相应的dll请联系QQ:1815222521
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅里雪山GIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值