网站首页 > 技术文章 正文
前言
公司项目(2018.04.15所写)中,大多模板都是Word格式,处理word也是一直是Office COM组件处理,最近是在一台机器上老是遇到打印假死,且异常捕捉不到,即使捕捉到也是RPC不可用.在我电脑上一直没遇到这种情况,所以就有换替换处理Word组件的想法.
因为公司项目是很早的项目,还是使用.Net Framework 3.5,所以最终尝试使用Aspose.Words组件.
处理Word组件大体有这几类:
- Microsoft.Office.Interop COM,要创建word/execl进程,使用中会遇到各种问题.
- OpenXml 微软开源的Office组件,在项目中引用不可用.对.Net Framework 4.0支持较好.
- NPOI 开源组件,基于Java POI组件移植,处理Excel比较好,对Word不太好.
- DocX 开源组件(更推荐这个,当然这个也有收费版本),支持.Net Framework 4.0及更高版本.
在 使用Aspose.Words将Word转PDF 中,简单使用了替换文本,书签替换. 这里主要简绍怎么使用处理长文本替换和插入图片.
长文本替换(主要是使用创建表格方式实现)
/// <summary>
/// 长文本要用书签替换内容
/// </summary>
/// <param name="doc">文档</param>
/// <param name="bookmarkName">书签名</param>
/// <param name="content">长文本</param>
public static void replaceLongTxt(Document doc, string bookmarkName, string content)
{
if (doc.Range.Bookmarks[bookmarkName] != null)
{
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToBookmark(bookmarkName);
doc.Range.Bookmarks[bookmarkName].Text = "";
builder.StartTable(); //创建table
builder.CellFormat.Width = 480; //设置单元格宽度
builder.CellFormat.Borders.LineStyle = LineStyle.None; //设置单元格边框
Cell cell = builder.InsertCell();
builder.Write(content);
builder.EndTable(); //结束table创建
}
}
插入图片
/// <summary>
/// 插入图片,指定宽度和高度
/// </summary>
/// <param name="doc">文档</param>
/// <param name="imgName">图片名称</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
public static void insertImg(Document doc, string imgName, double width, double height)
{
DocumentBuilder builder = new DocumentBuilder(doc);
builder.InsertImage(imgName,width,height);
}
/// <summary>
/// 根据书签位置,插入图片
/// </summary>
/// <param name="doc">文档</param>
/// <param name="bookMarkName">书签</param>
/// <param name="imgName">图片名称(包含图片地址)</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
private static void insertImg(Document doc, string bookMarkName, string imgName, double width, double height)
{
if (doc.Range.Bookmarks[bookMarkName] != null)
{
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToBookmark(bookMarkName);
builder.InsertImage(imgName,width,height);
}
}
测试代码
static void Main(string[] args)
{
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
//长文本内容
string longStr = @"逆向合成的基本原则是“逆向思维”,将目标化合物分子分解成基本的、可获得的组分,然后分析可以用哪些容易得到的试剂、通过哪些已知的化学反应步骤来合成。提出这一方法的美国哈佛大学教授E.J。科里曾获1990年诺贝尔化学奖。
“逆向合成是有机化学的终极学科,化学家需要数年才能掌握它——就如同下棋一样,除了学习专业知识,还需要很好的直觉和创造性。";
Document doc = new Document("提取pdf.docx"); //加载docx文档
DocumentBuilder builder = new DocumentBuilder(doc);
builder.MoveToBookmark("jcbg"); //先将光标移动书签位置
insertImg(doc, "insert.png", 485, 560); //插入图片1
insertImg(doc, "insert2.jpg", 485, 560); //插入图片2
replaceLongTxt(doc, "jcbg", longStr); //替换长文本
insertImg(doc, "qm1", "1.jpg", 50, 30); //直接根据书签插入图片
Guid guid = Guid.NewGuid();
doc.Save(string.Format("{0}.pdf", guid), SaveFormat.Pdf); //生成pdf
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
Console.ReadKey();
}
以上只是一个模板所需的功能,还没有在正式的项目经过测试.以后用到那些在补充吧!
个人能力有限,如果您发现有什么不对,请私信我
如果您觉得对您有用的话,可以点个赞或者加个关注,欢迎大家一起进行技术交流
猜你喜欢
- 2024-10-26 Aspose.Total 最新试用版大放送,更有海量资源等你来拿
- 2024-10-26 JAVA操作office工具 java 操作excel的工具
- 2024-10-26 开年钜惠|ASPOSE、Spire、Text Control文档管理产品超低折扣热销领跑
- 2024-10-26 看Aspose帮助知名企业实现邮件附件在线转换,提升邮件处理效率
- 2024-10-26 PDF开发工具Aspose.PDF功能推荐——在.NET中将PDF转换为HTML
- 2024-10-26 文档在线预览新版 总结篇 world在线预览
- 2024-10-26 在 Python 中将 HTML 转换为 PNG、JPEG、BMP、GIF 或 TIFF 图像
- 2024-10-26 送您一份文档管理控件Aspose&Spire系列中文教程!请查收
- 2024-10-26 文档在线预览(四) 总结篇 office在线预览解决方案
- 2024-10-26 Aspose.Words教程(六):Xamarin和.NET Standard的差异和局限
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)