利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

这篇具有很好参考价值的文章主要介绍了利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有时候,我们在处理大量文档的时候,需要批量给Word文档添加印章处理,方便打印操作,本篇随笔介绍利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理。

1、利用Aspose.Word组件对Word文件添加印章处理

简单的文档处理效果如下所示。

利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

和其他处理文档类似,我们首先根据Word文件路径,构建一个Aspose.Word.Document对象,如下所示。

 var signWord = FileDialogHelper.OpenWord(false, "Advice.doc", basePath);
 var doc = new Document(signWord);

在文档对象中,印章的处理,主要就是一个水印的对象处理,首先需要加载对应的图片水印,如下所示。

// 创建图片印章
var signImage = FileDialogHelper.OpenImage(false, "Sign.gif", basePath2);
var watermark = new Shape(doc, ShapeType.Image);
watermark.ImageData.SetImage(signImage);

然后剩下的就是设置各种属性信息了,如下代码所示。

// 创建图片印章
var watermark = new Shape(doc, ShapeType.Image);
watermark.ImageData.SetImage(signImage);
watermark.WrapType = WrapType.None;
watermark.BehindText = true;
watermark.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
watermark.RelativeVerticalPosition = RelativeVerticalPosition.Page;

// 设置印章图片大小
watermark.Width = 120;  // 印章图片的宽度(以点为单位)
watermark.Height = 120; // 印章图片的高度(以点为单位)

// 获取页面尺寸
PageSetup pageSetup = doc.LastSection.PageSetup;
double pageWidth = pageSetup.PageWidth - pageSetup.LeftMargin - pageSetup.RightMargin;
double pageHeight = pageSetup.PageHeight - pageSetup.TopMargin - pageSetup.BottomMargin;

// 计算印章位置
double watermarkLeft = pageWidth - watermark.Width;
double watermarkTop = pageHeight - watermark.Height;

// 设置印章位置
watermark.Left = watermarkLeft;
watermark.Top = watermarkTop;

// 将印章添加到页面
doc.LastSection.Body.LastParagraph.AppendChild(watermark.Clone(true));

// 保存文档
doc.Save(fileSave);

最后实现的文档处理效果如下所示。

利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

 文章来源地址https://www.toymoban.com/news/detail-579162.html

2、替换部分数据并添加印章

在我们实际处理的文档中,有时候,需要根据实际的业务数据,替换生成相关的文档内容。

例如对应一些合同文档,我们可能需要动态根据业务数据,添加相关的表格数据。

利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

那么我们需要定位好Table的位置,然后依次加入内容。如下代码所示。

    // 加载文档
    var doc = new Document(templateFile);
    // 获取第一个表格
    Table table = (Table)doc.GetChildNodes(NodeType.Table, true)[0];
    // 获取表头行
    Row headerRow = table.FirstRow;
    // 清除表格中的所有行,除了表头行
    table.Rows.Clear();
    table.Rows.Add(headerRow);

    // 绑定表格详细数据
    var index = 1;
    var totalAmount = 0m;
    foreach (var row in dataTable.Select($"供应商简称 = '{supplier}'"))
    {
        var tableRow = new Row(doc);

        AddRowCell(tableRow, index++.ToString());
        AddRowCell(tableRow, (string)row["原料名称"]);
        AddRowCell(tableRow, (string)row["原料编码"]);
        AddRowCell(tableRow, row["采购数量"].ToString().ToDecimal().ToString("0.########"));
        AddRowCell(tableRow, (string)row["单位"]);
        AddRowCell(tableRow, row["单价"].ToString().ToDecimal().ToString("0.########"));
        AddRowCell(tableRow, row["采购金额"].ToString().ToDecimal().ToString("0.########"));

        totalAmount += row["采购金额"].ToString().ToDecimal();

        table.Rows.Add(tableRow);
    }

    // 在第二行后插入合并的行
    var mergedRow = new Row(doc);
    AddRowCell(mergedRow, "合计");
    for (int i = 0; i < 6; i++)
    {
        if (i < 5)
        {
            AddRowCell(mergedRow, "");
        }
        else
        {
            AddRowCell(mergedRow, totalAmount.ToString("0.########"));
        }
    }    
    ......

最终实现的文档内容效果如下所示。

利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

文档最后部分定义了一些变量,用于实际的替换处理。

利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

最后还需替换公司信息,以及定位最后的印章位置,然后签章处理。

    //替换数据源
    var datarow = dataTable.Select($"供应商简称 = '{supplier}'")[0];
    var dictReplace = new Dictionary<string, string>
    {
        { "<当前日期>", DateTime.Now.ToString("yyyy-MM-dd") },

        { "<甲方>", datarow["甲方名称"].ToString() },
        { "<甲方地址>", datarow["甲方地址"].ToString() },
        { "<甲方电话>", datarow["甲方电话"].ToString() },
        { "<甲方传真>", datarow["甲方传真"].ToString() },

        { "<乙方>", datarow["供应商公司全称"].ToString() },
        { "<乙方地址>", datarow["供应商地址"].ToString() },
        { "<乙方电话>", datarow["电话"].ToString() },
        { "<乙方传真>", datarow["电话"].ToString() },
    };
    foreach (string name in dictReplace.Keys)
    {
        doc.Range.Replace(name, dictReplace[name], new FindReplaceOptions(FindReplaceDirection.Forward));
    }

最后界面效果如下所示。

利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理

其中印章位置,我们根据文本进行搜索,然后确定位置,在粘贴水印图片上去,这样就可以较好的定位好具体的位置。

    //添加印章
    string signImage = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, "Examples/PdfDemo/Sign.gif");
    var watermark = new Shape(doc, ShapeType.Image);
    watermark.ImageData.SetImage(signImage);
    watermark.WrapType = WrapType.None;
    watermark.BehindText = true;
    watermark.RelativeHorizontalPosition = RelativeHorizontalPosition.Page;
    watermark.RelativeVerticalPosition = RelativeVerticalPosition.Page;
    // 设置印章图片大小
    watermark.Width = 120;  // 印章图片的宽度(以点为单位)
    watermark.Height = 120; // 印章图片的高度(以点为单位)
    // 获取页面尺寸
    PageSetup pageSetup = doc.LastSection.PageSetup;
    double pageWidth = pageSetup.PageWidth - pageSetup.LeftMargin - pageSetup.RightMargin;
    double pageHeight = pageSetup.PageHeight - pageSetup.TopMargin - pageSetup.BottomMargin;
    // 计算印章位置
    double watermarkLeft = pageWidth - watermark.Width;
    double watermarkTop = pageHeight - watermark.Height;
    // 设置印章位置
    //watermark.Left = watermarkLeft;
    //watermark.Top = watermarkTop;
    // 查找并处理段落
    var searchText = "(章)";
    var collector = new LayoutCollector(doc);
    var enumerator = new LayoutEnumerator(doc);
    foreach (Paragraph paragraph in doc.LastSection.GetChildNodes(NodeType.Paragraph, true))
    {
        if (paragraph.Range.Text.Contains(searchText))
        {
            enumerator.Current = collector.GetEntity(paragraph);
            // 设置印章位置
            watermark.Left = 120;
            watermark.Top = enumerator.Rectangle.Top;
            break;
        }
    }
    // 将印章添加到页面
    doc.LastSection.Body.LastParagraph.AppendChild(watermark.Clone(true));
    var savedFile = Path.Combine(SaveDir, $"采购合同-{supplier}.doc");
    doc.Save(savedFile, SaveFormat.Doc);

最后实现获得我们所需的效果, 替换部分业务数据,并签章处理。

 

到了这里,关于利用Aspose.Word对Word文件添加印章处理以及实现业务数据的替换处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Word处理控件Aspose.Words功能演示:使用 C# 在 Word 文档中创建和修改 VBA 宏

    Aspose.Words 是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。此外, Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像

    2024年02月03日
    浏览(43)
  • Word控件Aspose.Words教程:使用 C# 读取 SXC 和 FODS 文件

    Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格

    2024年02月10日
    浏览(50)
  • Aspose.Pdf使用教程:在PDF文件中添加水印

    Aspose.PDF  是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能,广泛的超链接功能,图章和水印任务,扩展的安全控件和自定义字体处理。本文将为你

    2024年02月01日
    浏览(63)
  • Java版Word开发工具Aspose.Words基础教程:检测文件格式并检查格式兼容性

    Aspose.Words for Java是功能丰富的文字处理API,开发人员可以在自己的Java应用程序中嵌入生成,修改,转换,呈现和打印Microsoft Word支持的所有格式的功能。它不依赖于Microsoft Word,但是它提供了Microsoft Word通过其API支持的功能。 Aspose.Words for Java最新下载 https://www.evget.com/product/

    2024年02月14日
    浏览(53)
  • 【数字图像处理】灰度图像中添加高斯噪声、椒盐噪声、斑点噪声以及利用不同方法(中值、排序、维纳滤波)去除各种噪声的matlab程序

    图像处理问题描述: 1、图像中分别加入不同方差的高斯噪声、不同噪声密度椒盐噪声和不同方差的斑点噪声(Gaussian noise, salt  pepper noise and speckle noise) 2、分别通过函数medfilt2、ordfilt2和 Wiener 2 去除图像中添加的一些噪声(Gaussian noise, salt  pepper noise and speckle noise)。 各部

    2024年02月07日
    浏览(57)
  • aspose-words、itextpdf完美解决java将word、excel、ppt、图片转换为pdf文件

    我是 傲骄鹿先生 ,沉淀、学习、分享、成长。 如果你觉得文章内容还可以的话,希望不吝您的「一键三连」,文章里面有不足的地方希望各位在评论区补充疑惑、见解以及面试中遇到的奇葩问法 面对日常开发过程中,将各种文件转换为pdf文件的问题,总是让人头疼,这次终

    2024年02月03日
    浏览(66)
  • Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印

    本项目所有源码和依赖资源都在文章顶部链接,有需要可以下载使用 1. 需求描述 从指定位置读取一个 word 模板 获取业务数据并写入该 word 模板,生成新的 word 文档 将新生成的 word 文档转换为 pdf 格式 对 pdf 文档添加水印 2. 效果预览 word 模板 带水印的 pdf 文档 3. 实现思路

    2024年02月08日
    浏览(46)
  • 【已解决】aspose工具word转pdf文件,在linux服务器上使用docker-jenkins部署出现内容乱码问题

    因项目需求,需要将word格式文件转换pdf并添加水印,由于我在本地windos开发环境调试没有任何问题,一到测试环境linux发现乱码 例如: 由于项目是用docker+jenkins部署,经排查后发现原因是因为Linux跟windos中的字体不一样,windos中 c:windosuserFonts 目录中自带很多字体。但linux d

    2024年02月04日
    浏览(59)
  • Aspose导出word使用记录

    背景 :Aspose系列的控件,功能实现都比较强大,可以实现多样化的报表设计及输出。 通过这次业务机会,锂宝碳审核中业务功需要实现Word文档表格的动态导出功能,因此学习了相关内容,在学习和参考了官方API文档的帮助下,将学习和简单的使用记录在wiki中。下面由我来简

    2024年02月10日
    浏览(48)
  • CAD处理控件Aspose.CAD功能演示:在 C#中以编程方式搜索 DWG 图形文件中的文本

    Aspose.CAD 是一个独立的类库,以加强 Java应用程序处理和渲染CAD图纸,而不需要AutoCAD或任何其他渲染工作流程。该CAD类库允许将DWG, DWT, DWF, DWFX, IFC, PLT, DGN, OBJ, STL, IGES, CFF2文件、布局和图层高质量地转换为PDF和光栅图像格式。 Aspose API支持流行文件格式处理,并

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包