日期:2014-05-18  浏览次数:20662 次

我网上找了一段C#的word转pdf的代码 但是有错误哪位大侠帮帮忙看看
我网上找了一段C#的word转pdf的代码 这里报错:IWord.Words word = new Word2003Factory().CreateWord();我不知道 这里要导入什么东东 哪位大侠帮帮忙吧
这个是代码
C# code

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Drawing.Printing;
using Microsoft.Win32;
using System.Diagnostics;
using Word = Microsoft.Office.Interop.Word;

class PDFControl
{
    private string adobePdfPrint = "Adobe PDF";
        private string adobeDisPrint = "Acrobat Distiller";
        private string regRoot = "SOFTWARE\\Adobe\\Acrobat Distiller\\";
        private string printerFileName = "acrodist.exe";
        private string regName = "InstallPath";


        /// <summary>
        /// 获取acrodist.exe的安装路径
        /// </summary>
        /// <returns></returns>
        private string GetAdobeDisFilePath()
        {
            RegistryKey regKey = null;
            RegistryKey acrodistKey = null;
            string printerName = string.Empty;
            int i;
            string regRootVersion = string.Empty;

            regKey = Registry.LocalMachine;
            // acrodist的4-8版本适用
            for (i = 4; i < 9; i++)
            {
                regRootVersion = string.Format("{0}{1}.0", regRoot, i);
                acrodistKey = regKey.OpenSubKey(regRootVersion);

                if (acrodistKey != null)
                {
                    printerName = acrodistKey.GetValue(regName, "") + "\\" + printerFileName;
                    if (File.Exists(printerName))
                    {
                        return printerName;
                    }
                }
            }
            throw new Exception("Acrobat Distiller printer not found!");
        }

        /// <summary>
        /// 获取Adobe Printer 
        /// "Adobe PDF" 或 "Acrobat Distiller" 
        /// </summary>
        /// <returns></returns>
        private string GetAdobePrinter()
        {
            foreach (string printername in PrinterSettings.InstalledPrinters)
            {
                if (printername.ToUpper().IndexOf(adobePdfPrint.ToUpper()) != -1 || printername.ToUpper().IndexOf(adobeDisPrint.ToUpper()) != -1)
                {
                    return printername;                    
                }
            }
            return string.Empty;
        }

        public void ConvertWord2Pdf(string sourceFile)
        {
            if (PrinterSettings.InstalledPrinters.Count == 0)
                throw new Exception("Did not find the printer, please install the printer.");

            if (!File.Exists(sourceFile))
                throw new Exception(string.Format("File not found:{0}", sourceFile));

            string strDir = Path.GetDirectoryName(sourceFile);

            string strName = Path.GetFileNameWithoutExtension(sourceFile);

            string prnFile = string.Format("{0}\\{1}.prn",strDir,strName);
            string pdfFile =  string.Format("{0}\\{1}.pdf",strDir,strName);
            object objPrnFile = (object)prnFile;
            object background = true;
            object printToFile = true;
            object collate = true;
            object append = false;
            object manualDuplexPrint = false;
            object copies = false;
            object range = Word.WdPrintOutRange.wdPrintAllDocument;
            object missing = System.Reflection.Missing.Value;
            string msg = string.Empty;
            

            string adobePrinter = GetAdobePrinter();

            if (adobePrinter.Length == 0)
                throw new Exception("Did not find Adobe PDF printer or Acrobat Distiller printer, please install the printer.&quo