在项目开发中用到将MemoryStream 转pdf,在转化过程中需要建了一个.dom格式的模板,先保存为.doc文件,然后再转换为.pdf。
有一个插件感觉好不错,给大家推荐一下。
dll下载链接
http://pan.baidu.com/s/1skWPBAX
提取码:
fu4r
重点内容
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Word;
using Word = Microsoft.Office.Interop.Word;
namespace MyTools
{
public class WordHelper
{
private Word.Document wDoc = null;
private Word.Application wApp = null;
public Word.Document Document
{
get { return wDoc; }
set { wDoc = value; }
}
public Word.Application Application
{
get { return wApp; }
set { wApp = value; }
}
#region 从模板创建新的Word文档
/// <summary>
/// 从模板创建新的Word文档
/// </summary>
/// <param name="templateName">模板文件名</param>
/// <returns></returns>
public bool CreateNewWordDocument(string templateName)
{
try
{
return CreateNewWordDocument(templateName, ref wDoc, ref wApp);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 从模板创建新的Word文档,并且返回对象Document,Application
/// <summary>
/// 从模板创建新的Word文档,
/// </summary>
/// <param name="templateName">模板文件名</param>
/// <param name="wDoc">返回的Word.Document对象</param>
/// <param name="WApp">返回的Word.Application对象</param>
/// <returns></returns>
public static bool CreateNewWordDocument(string templateName, ref Word.Document wDoc, ref Word.Application WApp)
{
Word.Document thisDocument = null;
Word.Application thisApplication = new Word.ApplicationClass();
thisApplication.Visible = false;
thisApplication.Caption = "";
thisApplication.Options.CheckSpellingAsYouType = false;
thisApplication.Options.CheckGrammarAsYouType = false;
Object Template = templateName;// Optional Object. The name of the template to be used for the new document. If this argument is omitted, the Normal template is used.
Object NewTemplate = false;// Optional Object. True to open the document as a template. The default value is False.
Object DocumentType = Word.WdNewDocumentType.wdNewBlankDocument; // Optional Object. Can be one of the following WdNewDocumentType constants: wdNewBlankDocument, wdNewEmailMessage, wdNewFrameset, or wdNewWebPage. The default constant is wdNewBlankDocument.
Object Visible = true;//Optional Object. True to open the document in a visible window. If this value is False, Microsoft Word opens the document but sets the Visible property of the document window to False. The default value is True.
try
{
Word.Document wordDoc = thisApplication.Documents.Add(ref Template, ref NewTemplate, ref DocumentType, ref Visible);
thisDocument = wordDoc;
wDoc = wordDoc;
WApp = thisApplication;
return true;
}
catch (Exception ex)
{
string err = string.Format("创建Word文档出错,错误原因:{0}", ex.Message);
throw new Exception(err, ex);
}
}
#endregion
#region 文档另存为其他文件名
/// <summary>
/// 文档另存为其他文件名
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="wDoc">Document对象</param>
public bool SaveAs(string fileName)
{
try
{
return SaveAs(fileName, wDoc);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 文档另存为其他文件名
/// <summary>
/// 文档另存为其他文件名
/// </summary>
/// <param name="fileName">文件名</param>
/// <param name="wDoc">Document对象</param>
public static bool SaveAs(string fileName, Word.Document wDoc)
{
Object FileName = fileName; // 文档的名称。默认值是当前文件夹名和文件名。如果文档在以前没有保存过,则使用默认名称(例如,Doc1.doc)。如果已经存在具有指定文件名的文档,则会在不先提示用户的情况下改写文档。
Object FileFormat = Word.WdSaveFormat.wdFormatDocument; // 文档的保存格式。可以是任何 WdSaveFormat 值。要以另一种格式保存文档,请为 SaveFormat 属性指定适当的值。
Object LockComments = false; // 如果为 true,则锁定文档以进行注释。默认值为 false。
Object Password = System.Type.Missing; // 用来打开文档的密码字符串。(请参见下面的备注。)
Object AddToRecentFiles = false; // 如果为 true,则将该文档添加到“文件”菜单上最近使用的文件列表中。默认值为 true。
Object WritePassword = System.Type.Missing; // 用来保存对文件所做更改的密码字符串。(请参见下面的备注。)
Object ReadOnlyRecommended = false; // 如果为 true,则让 Microsoft Office Word 在打开文档时建议只读状态。默认值为 false。
Object EmbedTrueTypeFonts = false; //如果为 true,则将 TrueType 字体随文档一起保存。如果省略的话,则 EmbedTrueTypeFonts 参数假定 EmbedTrueTypeFonts 属性的值。
Object SaveNativePictureFormat = true; // 如果图形是从另一个平台(例如,Macintosh)导入的,则 true 表示仅保存导入图形的 Windows 版本。
Object SaveFormsData = false; // 如果为 true,则将用户在窗体中输入的数据另存为数据记录。
Object SaveAsAOCELetter = false; // 如果文档附加了邮件程序,则 true 表示会将文档另存为 AOCE 信函(邮件程序会进行保存)。
Object Encoding = System.Type.Missing; // MsoEncoding。要用于另存为编码文本文件的文档的代码页或字符集。默认值是系统代码页。
Object InsertLineBreaks = true; // 如果文档另存为文本文件,则 true 表示在每行文本末尾插入分行符。
Object AllowSubstitutions = false; //如果文档另存为文本文件,则 true 允许 Word 将某些符号替换为外观与之类似的文本。例如,将版权符号显示为 (c)。默认值为 false。
Object LineEnding = Word.WdLineEndingType.wdCRLF;// Word 在另存为文本文件的文档中标记分行符和换段符。可以是任何 WdLineEndingType 值。
Object AddBiDiMarks = true;//如果为 true,则向输出文件添加控制字符,以便保留原始文档中文本的双向布局。
try
{
wDoc.SaveAs(ref FileName, ref FileFormat, ref LockComments, ref Password, ref AddToRecentFiles, ref WritePassword
, ref ReadOnlyRecommended, ref EmbedTrueTypeFonts, ref SaveNativePictureFormat
, ref SaveFormsData, ref SaveAsAOCELetter, ref Encoding, ref InsertLineBreaks, ref AllowSubstitutions
, ref LineEnding, ref AddBiDiMarks);
return true;
}
catch (Exception ex)
{
string err = string.Format("另存文件出错,错误原因:{0}", ex.Message);
throw new Exception(err, ex);
}
}
#endregion
#region 关闭文档
/// <summary>
/// 关闭文档
/// </summary>
public void Close()
{
Close(wDoc, wApp);
wDoc = null;
wApp = null;
}
#endregion
#region 关闭文档
/// <summary>
/// 关闭文档
/// </summary>
/// <param name="wDoc">Document对象