public static void ExportWord(string tempFilePath, string outPath, Dictionary<string, string> data, Dictionary<string, string> imageList)
{ using (FileStream stream = File.OpenRead(tempFilePath))
{
XWPFDocument doc = new XWPFDocument(stream);
//遍历段落
foreach (var para in doc.Paragraphs)
{
ReplaceKey(para, data);
}
foreach (var key in imageList.Keys)
{
//给word中导入数据
//创建新的一行
XWPFRun r2 = doc.CreateParagraph().CreateRun();
var dd = imageList[key];
var newPath= Path.GetDirectoryName(imageList[key]) + "\\" + System.IO.Path.GetFileNameWithoutExtension(imageList[key]) + DateTime.Now.ToString("yyyyMMddHHmmss") + System.IO.Path.GetExtension(imageList[key]);
var newimage = AddWaterMark(imageList[key], newPath);
var img = Image.FromFile(newimage); var widthEmus = (int)(400.0 * );
var heightEmus = (int)(300.0 * ); using (FileStream picData = new FileStream(newimage, FileMode.Open, FileAccess.Read))
{
r2.AddPicture(picData, (int)PictureType.PNG, System.IO.Path.GetFileName(imageList[key]), widthEmus, heightEmus);
}
}
//遍历表格
foreach (var table in doc.Tables)
{
foreach (var row in table.Rows)
{
foreach (var cell in row.GetTableCells())
{
foreach (var para in cell.Paragraphs)
{
ReplaceKey(para, data);
}
}
}
}
using (var outFile = new FileStream(outPath, FileMode.Create))
{
doc.Write(outFile);
//outFile.Close();
}
doc.Close();
//写文件
//FileStream outFile = new FileStream(outPath, FileMode.Create); }
}
 /// <summary>
/// 给图片加水印
/// </summary>
/// <param name="imgPath"></param>
/// <param name="sImgPath"></param>
/// <returns></returns>
private static string AddWaterMark(string imgPath, string sImgPath)
{
using (Image image = Image.FromFile(imgPath))
{
try
{
Bitmap bitmap = new Bitmap(image); int width = bitmap.Width, height = bitmap.Height;
//水印文字
string text = "版权保密"; Graphics g = Graphics.FromImage(bitmap); g.DrawImage(bitmap, , );
//获取或设置与此 Graphics 关联的插补模式
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//获取或设置此 Graphics 的呈现质量
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//在指定的位置使用原始物理大小绘制指定的 Image。
g.DrawImage(image, new Rectangle(, , width, height), , , width, height, GraphicsUnit.Pixel); Font crFont = new Font("微软雅黑", , FontStyle.Bold);
SizeF crSize = new SizeF();
crSize = g.MeasureString(text, crFont); //背景位置(去掉了. 如果想用可以自己调一调 位置.)
//graphics.FillRectangle(new SolidBrush(Color.FromArgb(200, 255, 255, 255)), (width - crSize.Width) / 2, (height - crSize.Height) / 2, crSize.Width, crSize.Height); SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(, , , )); //将原点移动 到图片中点
//g.TranslateTransform(width / 2, height / 2);
//以原点为中心 转 -45度
//g.RotateTransform(-45);
//在指定位置并且用指定的 Brush 和 Font 对象绘制指定的文本字符串
g.DrawString(text, crFont, semiTransBrush, new PointF(, )); //保存文件
bitmap.Save(sImgPath, System.Drawing.Imaging.ImageFormat.Jpeg); }
catch (Exception e)
{
return e.Message;
}
} return sImgPath;
}

替换word中的数据,并给导入word的图片添加水印的更多相关文章

  1. Python 读取word中表格数据、读取word修改并保存、替换word中词汇、读取word中每段内容,读取一段话中相同样式内容,理解Document中run

    from docx import Document path = r'D:\pywork\12' # word信息表所在文件夹 w = Document(path + '/' + 'word信息表.d ...

  2. Word中截取部分内容并保存为jpg图片的方法

    private void button1_Click(object sender, EventArgs e) { var appWord = new Microsoft.Office.Interop. ...

  3. Java 添加、删除、替换、格式化Word中的文本(基于Spire.Cloud.SDK for Java)

    Spire.Cloud.SDK for Java提供了TextRangesApi接口可通过addTextRange()添加文本.deleteTextRange()删除文本.updateTextRang ...

  4. Word中批量替换软回车

    在平时工作中,有时候需要拷贝一些截取自网页上的文字,当选中后拷贝到Word中时,有时候在每行的结尾出现如下的符号,,这给后期文字的整理带来了很多不便,在此记录从网上获取的解决方法,以免遗忘和便于查找. ...

  5. 富文本编辑器直接从 word 中复制粘贴公式

    在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...

  6. PLSQL_数据泵Datapump导入导出数据IMPDP / EXPDP(概念)(Oracle数据导入导出工具)(转)

    一.摘要 在平常备库和数据库迁移的时候,当遇到大的数据库的时候在用exp的时候往往是需要好几个小时,耗费大量时间.oracle10g以后可以用expdp来导出数据库花费的时间要远小于exp花费的时间, ...

  7. 图解JanusGraph系列 - 关于JanusGraph图数据批量快速导入的方案和想法(bulk load data)

    大家好,我是洋仔,JanusGraph图解系列文章,实时更新~ 图数据库文章总目录: 整理所有图相关文章,请移步(超链):图数据库系列-文章总目录 源码分析相关可查看github(码文不易,求个sta ...

  8. 在word中使用notepad++实现代码的语法高亮

    转载自:http://blog.csdn.net/woohello/article/details/7621651 有时写文档时需要将代码粘贴到word中,但直接粘贴到word中的代码虽能保持换行与缩 ...

  9. Word中高效输入公式:内嵌公式和Mathtype

    Word中高效输入公式:内嵌公式和Mathtype 前言:对于理工科学生而言,公式输入必不可缺.LaTeX相比Word,在公式输入及排版方面更强大.但是对于轻量级的任务,用Word而言更加轻便(起码不 ...

随机推荐

  1. springboot启动后自动退出

    有时新建的springboot启动后自动退出运行,如图所示: 此种情况大都数是因为pom文件加入了tomcat的依赖,与springboot内嵌的tomcat冲突导致,所以只需将pom文件中的tomc ...

  2. 只要听说过电脑的人都能看懂的网上pdf全书获取项目

    作者:周奇 最近我要获取<概统>的教材自学防挂科(线代已死),于是我看到 htt链ps:/链/max链.book接118接.com接/html/2018/0407/160495927.sh ...

  3. python pytesseracct WinError2

    接上一个3步图像识别,本来已经在两台电脑同样的操作3步都可以识别出验证码,但是今天在新电脑同样的步骤却出现了winerror2,泪崩. 一样的配方,不一样的结果. 后来发现是调用不到tesseract ...

  4. Java8新特性时间日期库DateTime API及示例

    Java8新特性的功能已经更新了不少篇幅了,今天重点讲解时间日期库中DateTime相关处理.同样的,如果你现在依旧在项目中使用传统Date.Calendar和SimpleDateFormat等API ...

  5. centos7升级openssl、openssh常见问题及解决方法

    升级至openssl 1.1.1版本 升级至openssh 8.0版本 openssl version -a   当前查看版本 一.安装telnet (以防升级失败,连不上服务器,建议弄) #查看是否 ...

  6. redis缓存+session 实现单点登录

    一.单点登录介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系 ...

  7. 阿里terway源码分析

    背景 随着公司业务的发展,底层容器环境也需要在各个区域部署,实现多云架构, 使用各个云厂商提供的CNI插件是k8s多云环境下网络架构的一种高效的解法.我们在阿里云的方案中,便用到了阿里云提供的CNI插 ...

  8. AlexNet网络

    AlexNet 中包含了比较新的技术点,首次在CNN中成功应用了 ReLu .Dropout和LRN等Trick. 1.成功使用了Relu作为CNN的激活函数,并验证其效果在较深的网络中超过了Sigm ...

  9. drf框架安装配置及其功能概述

    0902自我总结 drf框架安装配置及其功能概述 一.安装 pip3 install djangorestframework 二.配置 # 注册drf app NSTALLED_APPS = [ # ...

  10. VMware15.5版本下安装Windows_Server_2008_R2

    一.新建虚拟机 第一步:打开VMware15.5虚拟机,在欢迎界面点击新建虚拟机: 第二步:选择典型(推荐)选项-->适用于新手,单击下一步: 第三步:选定最后一项稍后安装操作系统,单击下一步: ...