RTF/WORD ファイルを PDF に変換し、電子メールの添付ファイルとして送信する機能を提供する必要があります。このために、以下に示すコードを試しました。
// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;
Document doc;
protected void Page_Load(object sender, EventArgs e)
{
ConvertToPDF("test.doc");
}
void ConvertToPDF(string sFileName)
{
// Create a new Microsoft Word application object
Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application();
// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;
Document doc;
try
{
word.Visible = false;
word.ScreenUpdating = false;
DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(".") + "\\TempDoc");
FileInfo[] wordFile = dirInfo.GetFiles(sFileName);
if (wordFile.Length > 0)
{
Object filename = (Object)wordFile[0].FullName;
// Use the dummy value as a placeholder for optional arguments
doc = word.Documents.Open2000(ref filename, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing,
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
doc.Activate();
object outputFileName = wordFile[0].FullName.Replace(".doc", "");
object fileFormat = WdSaveFormat.wdFormatPDF;
// Save document into PDF Formats
doc.SaveAs2000(ref outputFileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing);
}
}
catch (Exception ex)
{
Response.Write(ex);
}
finally
{
// Close the Word document, but leave the Word application open.
// doc has to be cast to type _Document so that it will find the
// correct Close method.
doc = null;
// word has to be cast to type _Application so that it will find
// the correct Quit method.
word = null;
}
}
しかし、doc.SaveAs2000(ref outputFileName, ref fileFormat, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); でエラーが発生します。声明。
これには、Microsoft Office 2007 があり、PDF ファイルとして保存するオプションがないことが原因である可能性があります。Microsoft Office 2010 にはそのオプションがあるため、Microsoft Office 2010 がサーバーにインストールされている場合にこのコードが機能する可能性があります。