Naikniket Ответов: 4

преобразование файла word в pdf


у меня есть приложение, в которое я загружаю файл word, и когда я нажимаю на кнопку, он преобразует его в pdf-файл. Я также попробовал itextsharp, но не получил точного кода и для этого. Может ли кто-нибудь помочь мне решить эту проблему с помощью itextsharp или любого другого метода?? Заранее спасибо...

4 Ответов

Рейтинг:
5

TracyLandy

Здравствуйте, я нашел способ конвертировать с помощью Word automation.
Но это кажется немного медленным для преобразования

using Microsoft.Office.Interop.Word;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;

...

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

// C# doesn't have optional arguments so we'll need a dummy value
object oMissing = System.Reflection.Missing.Value;

// Get list of Word files in specified directory
DirectoryInfo dirInfo = new DirectoryInfo(@"\\server\folder");
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;

    // Use the dummy value as a placeholder for optional arguments
    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 cast to type _Application so that it will find
// the correct Quit method.
((_Application)word).Quit(ref oMissing, ref oMissing, ref oMissing);
word = null;


Hatepeora

Трейси я боюсь, что когда ты ... работая с автоматизацией слово .Чистая вы можете ожидать плохих результатов, потому что из-за сцены вы фактически запускаете само приложение MS Word. Кроме того, не рекомендуется использовать его на стороне сервера.
Вместо этого вы должны попробовать эта библиотека обработки текстов для .NET, он предоставляет прямой API для преобразование документов Word в PDF файлы на языке C#.

Рейтинг:
29

Volynsky Alex

Я думаю, что _A_K_ предложил вам хорошую статью

Вы также можете использовать онлайн API, т. е. я хотел бы предложить Restfull сервис http://www.convertapi.com/api/word-pdf-api.

Следующий пример консольного приложения ниже может быть использован в ASP.NET приложения тоже.

using System;
using System.Collections.Specialized;
using System.IO;
using System.Net;
using System.Threading;
using System.Windows.Forms;

namespace Word2Pdf
{
    class Program
    {
        [STAThreadAttribute]
        static void Main(string[] args)
        {

            using (var client = new WebClient())
            {
                Console.WriteLine("Please choose a Word document to convert to PDF.");

                var openFileDialog = new OpenFileDialog {Filter = 
"Word document(*.doc;*.docx)|*.doc;*.docx"};
                if (openFileDialog.ShowDialog()!=DialogResult.OK) return;                               
                var fileToConvert = openFileDialog.FileName;

                Console.WriteLine(string.Format("Converting the file {0} Please wait.", fileToConvert));

                var data = new NameValueCollection();               
                data.Add("OutputFileName", "MyFile.pdf"); 

                try
                {                    
                    client.QueryString.Add(data);
                    var response = 
client.UploadFile("http://do.convertapi.com/word2pdf", fileToConvert);
                    var responseHeaders = client.ResponseHeaders;
                    var web2PdfOutputFileName = responseHeaders["OutputFileName"];
                    var path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), web2PdfOutputFileName);
                    File.WriteAllBytes(path, response);
                    Console.WriteLine("The conversion was successful! The word file {0} converted to PDF and saved at {1}", fileToConvert, path);
                }
                catch (WebException e)
                {
                    Console.WriteLine("Exception Message :" + e.Message);
                    if (e.Status == WebExceptionStatus.ProtocolError)
                    {
                        Console.WriteLine("Status Code : {0}", ((HttpWebResponse)e.Response).StatusCode);
                        Console.WriteLine("Status Description : {0}", ((HttpWebResponse)e.Response).StatusDescription);
                    }

                }


            }

            Console.ReadLine();
        }
    }
}



Или вы также можете конвертировать документ Word в PDF с помощью Spire.Док (http://www.e-iceblue.com/Introduce/word-for-net-introduce.html[^]), например:
Spire.Doc.Document doc = new Spire.Doc.Document("my document.doc/docx")
doc.SaveToFile("pdf document.pdf", Spire.Doc.FileFormat.PDF);

Шпиль.Doc-это компонент MS Word, который позволяет пользователю непосредственно выполнять широкий спектр задач обработки документов Word, таких как создание, чтение, запись и изменение документа Word для .NET. Он поддерживает C#, VB.NET, ASP.NET, ASP.NET и MVC.


Pandvi

Хорошо! мои 5!

Volynsky Alex

Спасибо Пандви!

Grigor_I

+5!

Naikniket

может быть, вы думаете, что это глупо, но я должен спросить, как в будущем я собираюсь загрузить на сервер.. является ли этот api бесплатным???

Naikniket

я знаю, что Спайр не свободен.. я спрашиваю о 1-м из них..

Рейтинг:
1

_Amy

Привет,
По ссылке:
Преобразование Word-документов в PDF на ASP.NET сервер[^]

Всего наилучшего.
--Амит


Рейтинг:
0

Prasad_Kulkarni

Эта функция поможет вам сделать это:
Макросом _document.Способ ExportAsFixedFormat [^]

Вот вам пример:
Экспорт документов Word в PDF с помощью C#[^]

Также взгляните на некоторые похожие темы:
Конвертируйте файлы .xls,.doc в PDF с помощью C#[^]
Преобразование word doc в pdf[^]
а эта статья КП Создание PDF-файлов с использованием C# (и Office) из файлов RTF/DOC[^- это может тебе помочь.

Вот простой пример, где вы получаете много этого.
Как программно конвертировать файлы Word в PDF?[^]

Попробуйте поискать дальше CodeProject QA[^] &усилитель; Статьи CodeProject[^] на том же самом.