конвертировать doc в pdf в c #

Как преобразовать .doc в .pdf с помощью asp.net c #. Я не могу использовать какие-либо сторонние компоненты.

Код должен быть в

  1. C # или vb.net
  2. Совместимость с VS 2005. (Если нет, то также опубликуйте свои ответы, я бы вручную конвертировал в VS 2005)

Сообщите мне, если возникнут какие-либо вопросы.

Спасибо!


person xorpower    schedule 05.02.2011    source источник
comment
Пожалуйста, не отправляйте простые просьбы о написании кода за вас. Если у вас есть конкретный вопрос, задайте его.   -  person Adam Robinson    schedule 05.02.2011
comment
@ Адам: я буду иметь это в виду   -  person xorpower    schedule 05.02.2011
comment
@Scheffer: твоя ссылка сработала! но приведенный здесь фрагмент кода полезен только для .doc. Любая идея заставить его работать для .docx?   -  person xorpower    schedule 05.02.2011


Ответы (4)


private Microsoft.Office.Interop.Word.ApplicationClass MSdoc;       

        //Use for the parameter whose type are not known or say Missing
        object Unknown = Type.Missing;

  private void word2PDF(object Source, object Target)
        {   //Creating the instance of Word Application          
       if (MSdoc == null)MSdoc = new Microsoft.Office.Interop.Word.ApplicationClass();

            try
            {  
                MSdoc.Visible = false;               
                MSdoc.Documents.Open(ref Source, ref Unknown,
                     ref Unknown, ref Unknown, ref Unknown,
                     ref Unknown, ref Unknown, ref Unknown,
                     ref Unknown, ref Unknown, ref Unknown,
                     ref Unknown, ref Unknown, ref Unknown, ref Unknown, ref Unknown);
                MSdoc.Application.Visible = false;
                MSdoc.WindowState = Microsoft.Office.Interop.Word.WdWindowState.wdWindowStateMinimize;               

                object format = Microsoft.Office.Interop.Word.WdSaveFormat.wdFormatPDF;

                MSdoc.ActiveDocument.SaveAs(ref Target, ref format,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                        ref Unknown, ref Unknown, ref Unknown,
                       ref Unknown, ref Unknown);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
            }
            finally
            {
                if (MSdoc != null)
                {
                    MSdoc.Documents.Close(ref Unknown, ref Unknown, ref Unknown);
                    //WordDoc.Application.Quit(ref Unknown, ref Unknown, ref Unknown);
                }               
                // for closing the application
                WordDoc.Quit(ref Unknown, ref Unknown, ref Unknown);
            }
        }

Предпосылки:

  • MS word2007 с (сборка Primary Interoperability будет установлена ​​по умолчанию).
  • плагин SaveAsPDFandXPS ( бесплатно с сайта MS)

Убедитесь, что у вас есть ссылка на Word.12. Он автоматически добавит Microsoft.Office.interop.word к вашей ссылке. Следуйте этим инструкциям для других офисных приложений. (Примечание: вы должны были установить VS 2005 Tools for Office 2nd Ed. Runtime (VSTO 2005 SE) (x86)

person ayush    schedule 05.02.2011

Вы можете использовать Microsoft.Office.Interop.Word.dll для преобразования файла Word в PDF.

Сначала установите пакет и добавьте на него ссылку.

using Microsoft.Office.Interop.Word;

Затем используйте следующий код, чтобы преобразовать текстовый документ в PDF .

Application app = new Application();
Document doc = app.Documents.Open(@"D:/test.docx");
doc.SaveAs2(@"D:/test.pdf", WdSaveFormat.wdFormatPDF);
doc.Close();
app.Quit();
Console.WriteLine("Completed");
person Ashin    schedule 19.10.2019

Вы можете использовать мой код, он работает без каких-либо исключений и не сохраняет открытые COM-объекты в фоновых процессах.

Application app = new Application();
                app.Visible = false;
                app.DisplayAlerts = WdAlertLevel.wdAlertsNone;
                Documents documents = app.Documents;
                Document doc = documents.Open(fileLocation);
                newPath = Path.GetDirectoryName(fileLocation);
                newPath = newPath.Replace(newPath, outLocation);
                if (!File.Exists(newPath))
                {
                    doc.SaveAs2(newPath, WdSaveFormat.wdFormatPDF);
                }

                Marshal.ReleaseComObject(documents);
                doc.Close();
                Marshal.ReleaseComObject(doc);
                app.Quit();
                Marshal.ReleaseComObject(app);
person Fuad Alizade    schedule 03.09.2020

person    schedule
comment
Непонятно, что добавляет ваш ответ, который отличается от принятого ответа. В общем, вы должны описывать то, что публикуете, а не просто вводить код, но тем более для старого вопроса, для которого уже есть принятое решение. - person Seth Battin; 27.03.2017