2013-02-16 2 views
0

Я нашел этот приятный рабочий код на этом сайте, но я хотел внести некоторые изменения.преобразование нескольких файлов ext в pdf из пользовательского ввода не каталог файлов

Я хочу попросить пользователя загрузить документ, но я бы хотел преобразовать его документ в файл PDF, если он уже не в формате PDF, например, преобразование всех файлов doc, docx и excel.

Я получил его для работы с .doc-файлами, и если бы я хотел добавить больше, я бы добавил их в «* .doc, * .docx, ...»?

Также в настоящее время программа преобразует файл, если файл находится в том же каталоге. Я хочу, чтобы он принял новый каталог от пользователя и сохранил его в другом каталоге, а не обязательно в одном месте - например, программа сохранила бы из ... \ Documents to ... \ Uploads. Как я могу это сделать?

Вот Слово PDF код:

private void Word2PDF() { 
     //Create a new Microsoft Word application object 
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 

    //Adding dummy value because c# doesn't have optional arguments 
    object oMissing = System.Reflection.Missing.Value; 

    //Getting list of word files in specified directory 
    DirectoryInfo dirInfo = new DirectoryInfo("C:\\TestFilestore\\"); 
    FileInfo[] wordFiles = dirInfo.GetFiles("*.doc"); 

    word.Visible = false; 
    word.ScreenUpdating = false; 

     foreach (FileInfo wordFile in wordFiles) { 
      //Cast as object for word open method 
      Object filename = (Object) wordFile.FullName; 

      Microsoft.Office.Interop.Word.Document 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 = wordFile.FullName.Replace(".doc", ".pdf"); 
      object fileFormat = WdSaveFormat.wdFormatPDF; 

      //Save document into pdf format 
      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); 

      //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. 
      object saveChanges = WdSaveOptions.wdDoNotSaveChanges; 
      ((_Document)doc).Close(ref saveChanges, ref oMissing, ref oMissing); 
      doc = null; 
     } 

     //word has to be case to type_application so that it will find the correct quit method. 
     ((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing); 
     word = null; 
    } 
+1

Вы пытались реализовать функцию SaveDialog() для этого ..? – MethodMan

+0

@DJKRAZE Я не уверен, следую ли я тому, что именно означает u. Можете немного прояснить - Спасибо. – BB987

ответ

0

Если вы хотите перебрать все ваши Word документов с различными расширениями вы можете захватить все файлы из каталога, и отфильтровать список с Linq.

Вот пример, вам нужно объединить его обратно в свой код, чтобы заставить его работать, но вы получите эту идею.

Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); 
    var oMissing = System.Reflection.Missing.Value; 

    // grab all the filenames from your directory (*.*) and filter them with linq 
    var wordDocumentFilenames = Directory.GetFiles(@"C:\TestFilestore\", "*.*"). 
           Where(file => 
            file.ToLower().EndsWith("doc") || 
            file.ToLower().EndsWith("docx")). // extend the list to your needs 
            ToList(); 

    foreach (var wordDocumentFilename in wordDocumentFilenames) 
    { 
     Microsoft.Office.Interop.Word.Document wordDocument = word.Documents.Open(
      wordDocumentFilename, 
      ref oMissing, 
      /* supply the rest of the parameters */); 
    } 
+0

Большое спасибо, я пойду вперед и попробую это. Но что, если я хочу конвертировать файлы, введенные пользователем, а не обязательно в каталог? Я прошу пользователя загрузить файл, а затем они просмотрят файл, а затем нажмите «Загрузить» - вот где я буду конвертировать входной файл от пользователя в pdf и сохранить его в папке «testStorefile», – BB987

 Смежные вопросы

  • Нет связанных вопросов^_^