C#.文档到PDF的转换

本文关键字:转换 PDF 文档 | 更新日期: 2023-09-27 18:26:04

我正在尝试使用visual studio 2013将doc或docx文件转换为PDF。C#语言。我试着调试,我认为我对以下代码部分有问题:

public static void Main(string[] args)
    {
        if (args.Count() > 1)
        {
            translate.ConvertAllWordFilesToPdf(args[0], args[1]);
        }
    }

我没有任何错误。我收到以下输出消息:程序"[9240]Conversion.vshost.exe"已退出,代码为0(0x0)。

谢谢你的帮助。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.IO;
using System.Text;
using Microsoft.Office.Interop.Word;
namespace Conversion
{
public static class Program
{
    public static void Main(string[] args)
    {
        if (args.Count() > 1)
        {
            translate.ConvertAllWordFilesToPdf(args[0], args[1]);
        }
    }
    public class translate
    {
        public static void ConvertAllWordFilesToPdf(string WordFilesLocation, string PdfFilesLocation)
        {
            Document doc = null;

            object oMissing = System.Reflection.Missing.Value;
            Microsoft.Office.Interop.Word.Application word = null;
            try
            {
                word = new Microsoft.Office.Interop.Word.Application();

                DirectoryInfo dirInfo = new DirectoryInfo(WordFilesLocation);
                FileInfo[] wordFiles = dirInfo.GetFiles("*.doc");
                if (wordFiles.Length > 0)
                {
                    word.Visible = false;
                    word.ScreenUpdating = false;
                    string sourceFile = "";
                    string destinationFile = "";
                    try
                    {
                        foreach (FileInfo wordFile in wordFiles)
                        {
                            Object filename = (Object)wordFile.FullName;
                            sourceFile = wordFile.Name;
                            destinationFile = "";

                            doc = word.Documents.Open(ref filename, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, 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 = null;
                            if (wordFile.FullName.ToUpper().Contains(".DOCX"))
                            {
                                outputFileName = wordFile.FullName.Replace(".docx", ".pdf");
                                destinationFile = sourceFile.Replace(".docx", ".pdf");
                            }
                            else
                            {
                                outputFileName = wordFile.FullName.Replace(".doc", ".pdf");
                                destinationFile = sourceFile.Replace(".doc", ".pdf");
                            }
                            sourceFile = WordFilesLocation + @"C:'Source" + destinationFile;
                            destinationFile = PdfFilesLocation + @"C:'Destination" + destinationFile;
                            object fileFormat = WdSaveFormat.wdFormatPDF;

                            doc.SaveAs(ref outputFileName,
                                ref fileFormat, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing,
                                ref oMissing, ref oMissing, ref oMissing, ref oMissing);

                            object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
                            ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing);
                            doc = null;

                            if (System.IO.File.Exists(destinationFile))
                            {
                                System.IO.File.Replace(sourceFile, destinationFile, null);
                            }
                            else
                            {
                                System.IO.File.Move(sourceFile, destinationFile);
                            }
                            Console.WriteLine("Success:" + "SourceFile-" + outputFileName.ToString() + " DestinationFile-" + destinationFile);
                        }

                        ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
                        word = null;
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine("Fail:" + "SourceFile-" + sourceFile + "  DestinationFile-" + destinationFile + "#Error-" + ex.Message);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error occured while processing");
                Console.WriteLine(ex.Message);
            }
            finally
            {
                if (doc != null)
                {
                    ((_Document)doc).Close(ref oMissing, ref oMissing, ref oMissing);
                    doc = null;
                }
                if (word != null)
                {
                    ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
                    word = null;
                }
            }
        }
    }
  }
}

C#.文档到PDF的转换

我注意到一段非常有趣的代码:

sourceFile = WordFilesLocation + @"C:'Source" + destinationFile;
destinationFile = PdfFilesLocation + @"C:'Destination" + destinationFile;

尝试删除@"C:'Source"。我删除了它,代码在我的电脑上运行。

此外,我不确定是否应该为某些位置字符串附加@"'"(不以"''"结尾)。小心。