在C#中以编程方式使用CutePdf将word文档转换为pdf

时间:2011-04-15 05:48:42

标签: c#

我有以下代码使用CutePdf Writer将word文档转换为pdf

        PrintDialog pDia = new PrintDialog();
        PrinterSettings ps = new PrinterSettings();
        pDia.Document = printDocumentMessageBoxTest;
        pDia.Document.DocumentName = "C:\\FinalGap.doc";

        ps.PrinterName = "CutePDF Writer";
        ps.PrintToFile = true;

        ps.PrintFileName = "C:\\" + Path.GetFileNameWithoutExtension(pDia.Document.DocumentName) + ".pdf";

        // take printer settings from the dialog and set into the PrintDocument object
        pDia.Document.OriginAtMargins = true;
        ps.DefaultPageSettings.Margins.Left = 2;
        //printDocumentMessageBoxTest.PrinterSettings = ps;

        // start the printing process, catch exceptions
        try
        {
            printDocumentMessageBoxTest.Print();
        }
        catch (Exception exc)
        {
            MessageBox.Show("Printing error!\n" + exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }

当我运行应用程序时,它正在打印word文档,但未生成输出文件。 任何人都可以告诉我如何使用CUTEPDF以编程方式将word文档转换为pdf,并且上述代码是错误的吗?

1 个答案:

答案 0 :(得分:3)

CutePdf Writer不支持自动化。您不能以尝试使用它的方式使用它。您可以从他们那里购买Custom Pdf Writer,然后您的代码将是这样的:

        string regKey = @"HKEY_CURRENT_USER\Software\Custom PDF Printer";
        Registry.SetValue(regKey, "OutputFile", @"C:\Sample.pdf", RegistryValueKind.String);
        Registry.SetValue(regKey, "BypassSaveAs", @"1", RegistryValueKind.String);
        Application wordApp = new Word.Application();
        Document wordDoc = wordApp.Documents.Open(@"C:\test.doc");
        wordApp.ActivePrinter = "Custom PDF Printer";
        wordApp.PrintOut();
        wordDoc.Close();
        Registry.SetValue(regKey, "BypassSaveAs", @"0", RegistryValueKind.String);

另见:

我个人使用ABCPdf作为项目而我喜欢它,但是我的目标不是从doc转换而是从html转换为pdf而且组件不是免费的。