当前位置: 首页 > news >正文

网站建设飠金手指下拉网络推广怎么学

网站建设飠金手指下拉,网络推广怎么学,网页制作培训多少钱一天,建好网站后访问目录 实现效果 范例运行环境 Office DCOM 配置 设计实现 创建stamp图章类 电子章图片的计算与定位 旋转图片方法 总结 实现效果 在OA的自动化处理系统中#xff0c;通过审批的最终节点#xff0c;可能会对WORD文件加盖电子章#xff0c;比如定位带有指定文字的Ra…  目录 实现效果 范例运行环境 Office DCOM 配置 设计实现 创建stamp图章类  电子章图片的计算与定位 旋转图片方法 总结  实现效果 在OA的自动化处理系统中通过审批的最终节点可能会对WORD文件加盖电子章比如定位带有指定文字的Range周围加盖电子章骑缝章甚至水印图片。比如如下效果图 范例运行环境 操作系统 Windows Server 2019 DataCenter 操作系统上安装 Office Word 2016 客户端使用的 Office Word 2019 .net版本 .netFramework4.7.1 或以上 开发工具VS2019  C# Office DCOM 配置 请参考我的文章《C# 读取Word表格到DataSet》有对Office DCOM详细配置介绍这里不再赘述。  设计实现 创建stamp图章类  导出WORD文件可以传入多个图章类如果需要的话图章类主要包括实现如下设置 1、可设置三种图片标准的盖章图片、骑缝章图片、水印图片 2、标准的盖章图片是否显示不显示则可以只显示骑缝章或水印图片这个可以模拟多次盖骑缝章的效果 3、定位盖章文字可以设置一下 x、y的偏移量以校准指定的模板文件达到最佳重叠效果。 4、可设置各种章的翻转角度可随机选取 示例代码如下  public class stamp{public string stampImageFilename ; //盖章图片public string stampImageFilename2 ; //骑缝章图片public string stampImageFilename3 ; //水印章图片public bool stampImageVisible true; //主章是否可显示public string findWord ; //查找盖章定位文字public int findWordOffsetX 0; //查找盖章文字后章的定位偏移量public int findWordOffsetY 0; //查找盖章文字后章的定位偏移量public int stamp2X 0; //骑缝章偏移量public int stamp2Y 0; //骑缝章偏移量public int roteAngle 0; //骑缝章翻转角度12点方向为0度顺时针计算角度public bool roteReFix false; //骑缝章翻转角度重新计算适应图片多见于对角线public bool randomRoteAngle false; //骑缝章是否按指定角度的最大随机值提取public int stampImageWidth 0; //章宽度public int stampImageHeight 0; //章高度public string stamp2Direction right; //骑缝章盖章方向 默认right 包括 left/top/bottompublic int stampAngle 0; //骑缝章翻转角度12点方向为0度顺时针计算角度public bool randomStampAngle false; //骑缝章是否按指定角度的最大随机值提取public int stamp3X 0; //水印章每页Xpublic int stamp3Y 0; //水印章每页Ypublic int stamp3Angle 0; //水印章翻转角度12点方向为0度顺时针计算角度} 电子章图片的计算与定位 可以创建多个图章类添加 ArrayList 中进行方法传递 初始值为public ArrayList Stamps null; 创建方法  public string setWordStamps(string _filename,ArrayList Stamps) 实现的功能大致如下 1、主章根据提供查找的关键字如 “盖章处”、“盖章”然后添加图片重叠在文字的上方周围 2、骑缝章根据页数进行分割计算每页分隔宽度不小于 1 像素 3、骑缝章可选择“盖”在页面的上下左右位置如果多个位置方向都需要“盖”则传递多个 stamp 图章类 4、章可以随机和指定旋转角度 示例代码如下 public string setWordStamps(string _filename,ArrayList Stamps){Object Nothing System.Reflection.Missing.Value;string _file,_pathPath.GetDirectoryName(_filename)\\tempbfile\\,_ext;_filePath.GetFileNameWithoutExtension(_filename);_extPath.GetExtension(_filename);string _validfilenameGuid.NewGuid().ToString()_ext;string _lastfile_path_validfilename;string _pdfFile _path Guid.NewGuid().ToString() .pdf;System.IO.File.Copy(_filename,_lastfile,true);if(!File.Exists(_lastfile)){return ;}//取得Word文件保存路径object filename_lastfile;//创建一个名为WordApp的组件对象Word.Application WordAppnew Word.Application();//创建一个名为WordDoc的文档对象WordApp.DisplayAlertsWord.WdAlertLevel.wdAlertsNone;Word.Document WordDocWordApp.Documents.Open(ref filename,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing,ref Nothing);WordDoc.SpellingChecked false;WordDoc.ShowSpellingErrors false;WordDoc.ActiveWindow.View.Type Word.WdViewType.wdNormalView;//遍历stamp图章类foreach (stamp Stamp in Stamps){bool isfirst true;int iii 0;int selectStart 0;ArrayList restoreRange new ArrayList();while (true){iii;bool findstamptext false;if (Stamp.findWord ! ){WordApp.Selection.Range.Start selectStart;Word.Find fnd WordApp.Selection.Find;Object findText Stamp.findWord;Object matchCase false;Object matchWholeWord Type.Missing;Object matchWildcards false;Object matchSoundsLike false;Object matchAllWordForms false;Object forward true;Object wrap Word.WdFindWrap.wdFindContinue;Object format false;Object replaceWith ;Object replace Type.Missing; ;Object matchKashida Type.Missing;Object matchDiacritics Type.Missing;Object matchAlefHamza Type.Missing;Object matchControl Type.Missing;if (fnd.Execute(ref findText, ref matchCase, ref matchWholeWord, ref matchWildcards, ref matchSoundsLike, ref matchAllWordForms,ref forward, ref wrap, ref format, ref replaceWith, ref replace, ref matchKashida, ref matchDiacritics, ref matchAlefHamza, ref matchControl)){selectStart WordApp.Selection.Range.Start;restoreRange.Add(WordApp.Selection.Range);findstamptext true;}else{findstamptext false;}}if (findstamptext false){break;}Word.InlineShape pic WordApp.Selection.Range.InlineShapes.AddPicture(Stamp.stampImageFilename, false, true);Word.Shape picshape pic.ConvertToShape();picshape.WrapFormat.Type Word.WdWrapType.wdWrapNone;if (Stamp.stampImageWidth ! 0){picshape.Width Stamp.stampImageWidth;}if (Stamp.stampImageHeight ! 0){picshape.Height Stamp.stampImageHeight;}float pagewidth 0;float pageheight 0;if (findstamptext true){if (Stamp.stampAngle 0){Random rnd new Random();picshape.Rotation Stamp.randomStampAngle false ? Stamp.stampAngle : rnd.Next(Stamp.stampAngle);}pagewidth WordApp.Selection.PageSetup.PageWidth;pageheight WordApp.Selection.PageSetup.PageHeight;int ox 0; int oy 0; int ow 0; int oh 0;WordApp.Windows[1].GetPoint(out ox, out oy, out ow, out oh, WordApp.Selection.Range);WordApp.Selection.Range.Text ;picshape.RelativeHorizontalPosition Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage;picshape.RelativeVerticalPosition Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;picshape.Left (float)(ox * 0.405402299) - (picshape.Width / 2);picshape.Top WordApp.Selection.Range.Information[Word.WdInformation.wdVerticalPositionRelativeToPage] - (picshape.Height / 2);if ((bool)WordApp.Selection.Range.Information[Word.WdInformation.wdWithInTable] true){picshape.RelativeHorizontalPosition Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionCharacter;picshape.RelativeVerticalPosition Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionLine;picshape.Left 0;picshape.Top 0;}}picshape.Left picshape.Left Stamp.findWordOffsetX;picshape.Top picshape.Top Stamp.findWordOffsetY;if (Stamp.stampImageVisible false){picshape.Visible Microsoft.Office.Core.MsoTriState.msoFalse;}if (Stamp.stampImageFilename2 ! isfirsttrue){int ra Stamp.roteAngle;if (ra 0){Random rnd new Random();ra Stamp.randomRoteAngle false ? ra : rnd.Next(ra);}Bitmap cc (Bitmap)Image.FromFile(Stamp.stampImageFilename2);Bitmap bb Rotate(cc, -ra, Stamp.roteReFix); WordDoc.Windows[1].Panes[1].Pages;int pages2 WordDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, ref Nothing);if (pages2 1){pages2 0; //如果一页就不盖骑缝章}for (int pi 1; pi pages2; pi){Word.Range pagerange WordDoc.GoTo(Word.WdGoToItem.wdGoToPage, Word.WdGoToDirection.wdGoToAbsolute, pi.ToString());int rx (pi - 1) * bb.Width / pages2;int ry 0;int rw bb.Width / pages2;int rh bb.Height;if (Stamp.stamp2Direction bottom){rx 0;ry (pi - 1) * bb.Height / pages2;rw bb.Width;rh bb.Height / pages2;}else if (Stamp.stamp2Direction left){rx (pages2 - pi) * bb.Width / pages2;ry 0;rw bb.Width / pages2;rh bb.Height;}else if (Stamp.stamp2Direction top){rx 0;ry (pages2 - pi) * bb.Height / pages2;rw bb.Width;rh bb.Height / pages2;}if (rw 1 || rh 1){continue;}Bitmap sepbitmap1 bb.Clone(new System.Drawing.Rectangle(rx, ry, rw, rh), System.Drawing.Imaging.PixelFormat.Format32bppPArgb);string temppng d:\\ System.Guid.NewGuid().ToString() .png;sepbitmap1.Save(temppng);Word.InlineShape pic2 pagerange.InlineShapes.AddPicture(temppng, false, true);Word.Shape picshape2 pic2.ConvertToShape();picshape2.WrapFormat.Type Word.WdWrapType.wdWrapNone;picshape2.Width picshape.Width / pages2;picshape2.Height picshape.Height;if (Stamp.stamp2Direction bottom || Stamp.stamp2Direction top){picshape2.Width picshape.Width;picshape2.Height picshape.Height / pages2;}picshape2.RelativeHorizontalPosition Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage;picshape2.RelativeVerticalPosition Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;picshape2.Left pagewidth - picshape2.Width;picshape2.Top Stamp.stamp2Y;if (Stamp.stamp2Direction bottom){picshape2.Left Stamp.stamp2X;picshape2.Top pageheight - picshape2.Height;}else if (Stamp.stamp2Direction left){picshape2.Left 0;picshape2.Top Stamp.stamp2Y;}else if (Stamp.stamp2Direction top){picshape2.Left Stamp.stamp2X;picshape2.Top 0;}resultReport string.Format(stamp2 {2} left: {0} top:{1} width:{3} height:{4}br, picshape2.Left, picshape2.Top,pi,picshape2.Width,picshape2.Height);File.Delete(temppng);}}//stamp2if (Stamp.stampImageFilename3 ! isfirsttrue){int ra Stamp.stamp3Angle;if (ra 0){Random rnd new Random();ra Stamp.randomRoteAngle false ? ra : rnd.Next(ra);}Bitmap cc (Bitmap)Image.FromFile(Stamp.stampImageFilename3);Bitmap bb Rotate(cc, -ra, true);int pages2 WordDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages, ref Nothing);resultReport string.Format( PageCount3:{0}br, pages2);for (int pi 1; pi pages2; pi){Word.Range pagerange WordDoc.GoTo(Word.WdGoToItem.wdGoToPage, Word.WdGoToDirection.wdGoToAbsolute, pi.ToString());int rx (pi - 1) * bb.Width / pages2;rx 0;int ry 0;int rw bb.Width;int rh bb.Height;Bitmap sepbitmap1 bb.Clone(new System.Drawing.Rectangle(rx, ry, rw, rh), System.Drawing.Imaging.PixelFormat.Format32bppPArgb);string temppng d:\\ System.Guid.NewGuid().ToString() .png;Word.InlineShape pic2 pagerange.InlineShapes.AddPicture(temppng, false, true);Word.Shape picshape2 pic2.ConvertToShape();picshape2.WrapFormat.Type Word.WdWrapType.wdWrapNone;picshape2.Width picshape.Width;picshape2.Height picshape.Height;picshape2.RelativeHorizontalPosition Word.WdRelativeHorizontalPosition.wdRelativeHorizontalPositionPage;picshape2.RelativeVerticalPosition Word.WdRelativeVerticalPosition.wdRelativeVerticalPositionPage;picshape2.Left Stamp.stamp3X;// picshape2.Left Stamp.stamp2X;picshape2.Top Stamp.stamp2Y;File.Delete(temppng);}}//stamp3isfirst false;}// whileforeach (Word.Range range in restoreRange){range.Text Stamp.findWord;}}//foreachWordDoc.Save();WordDoc.Close(ref Nothing, ref Nothing, ref Nothing);//关闭WordApp组件对象WordApp.Quit(ref Nothing, ref Nothing, ref Nothing);return _lastfile;} 旋转图片方法 public Bitmap Rotate(Bitmap b, int angle,bool fixfalse){angle angle % 360;//弧度转换double radian angle * Math.PI / 180.0;double cos Math.Cos(radian);double sin Math.Sin(radian);//原图的宽和高int w b.Width;int h b.Height;int ow w;int oh h;int d ((int)Math.Sqrt(Math.Pow(w - 0, 2) Math.Pow(h- 0, 2))1);if (fix true){w d;h d;}int W (int)(Math.Max(Math.Abs(w * cos - h * sin), Math.Abs(w * cos h * sin)));int H (int)(Math.Max(Math.Abs(w * sin - h * cos), Math.Abs(w * sin h * cos)));//目标位图Bitmap dsImage new Bitmap(w, h);System.Drawing.Graphics g System.Drawing.Graphics.FromImage(dsImage);g.InterpolationMode System.Drawing.Drawing2D.InterpolationMode.Bilinear;g.SmoothingMode System.Drawing.Drawing2D.SmoothingMode.HighQuality;//计算偏移量System.Drawing.Point Offset new System.Drawing.Point((W - w) / 2, (H - h) / 2);//构造图像显示区域让图像的中心与窗口的中心点一致System.Drawing.Rectangle rect new System.Drawing.Rectangle(fixfalse?0:(d-ow)/2, fix false ? 0 : (d-oh)/2, ow, oh); // System.Drawing.Rectangle rect new System.Drawing.Rectangle(Offset.X, Offset.Y, w, h);// System.Drawing.Point center new System.Drawing.Point(rect.X rect.Width / 2, rect.Y rect.Height / 2);System.Drawing.Point center new System.Drawing.Point(rect.X rect.Width / 2, rect.Y rect.Height / 2);g.TranslateTransform(center.X, center.Y);g.RotateTransform(360 - angle);//恢复图像在水平和垂直方向的平移g.TranslateTransform(-center.X, -center.Y);g.DrawImage(b, rect);//重至绘图的所有变换g.ResetTransform();g.Save();g.Dispose();//dsImage.Save(yuancd.jpg, System.Drawing.Imaging.ImageFormat.Jpeg);return dsImage;} 总结  以上是实现设计的一些参考代码在实际的使用中可能还会遇到如下问题 1、定位关键字的叠加效果不好因此针对每一个模板文件均需要调整图片的x、y偏移量以达到最佳效果 2、对于超多页面的文件(如几万页)骑缝的效果可能不佳可以采取调整图片像素宽度或拆分模板文件进行处理 示例代码仅作参考欢迎大家评论指教
http://www.pierceye.com/news/328170/

相关文章:

  • 网站开发与sparkwordpress default
  • 品牌网站建设帮你大蝌蚪北京做网站建设的公司排名
  • 中国建设第一平台网站网络网站建设10大指标
  • 书画院网站源码网站主题模板下载不了
  • 邢台制作网站网上申报流程
  • 做网站的困难做的网站有营销效果吗
  • 高端集团网站建设公司做网站开发的有外快嘛
  • 网站服务器防火墙设置惠州网络推广公司哪家好
  • 做网站根据内容生成pdfwordpress自媒体二号
  • 临沂网站开发不会写代码怎么做网站
  • 怎么做加密货币网站wordpress 多域名登陆
  • 做网站的过程做网站公司广州
  • 女人动漫做受网站wordpress如何作页面
  • 做网站导航栏素材图建筑设计网站制作
  • 淘宝的网站建设方案国家为何要求所有网站均须备案
  • 企业网站模板下载哪家公司强温州建设公司网站
  • 网站编辑能在家做wordpress 做的商城
  • 空间信息网站开发公司工程项目质量安全管理体系
  • 网站流量被黑包装回收网站建设
  • 网站拒绝被百度收录成品网站1688特色
  • 深圳住房和建设局网站官网打不开WordPress 斗鱼
  • 纯文本网站连接西宁圆井模板我自己做的网站
  • 职业院校专题建设网站wordpress文章版权投诉
  • 网站改版好吗如何解决旅游网站建设问题
  • 爱站网使用的是什么网站模仿网站页面违法吗
  • 做民宿的网站wordpress 短信平台
  • 婚恋网站上认识人 带你做原油交易怎么用手机创造网站
  • 网站建设投标书服务方案范本天津北京网站建设公司
  • 网站建设好评公司微企点建站怎么样
  • 某网站开发项目成本估计推广普通话作文500字