Eman2020 Ответов: 1

Конвертируйте файл. xlsx или. docx в. pdf


Дорогие мои, я веб-разработчик, использующий MVC, я хочу конвертировать файлы, которые я уже загрузил, он отлично работает на моем локальном компьютере, но когда я публикую решение на сервере, оно не работает и не выдает никаких ошибок..

это мой код

Что я уже пробовал:

public jsonResult Convertfiletopdf(string filename , string filePatgh)

    {
        try
        {

            filePatgh = Path.Combine(Server.MapPath("~/Uploads/"));
            if (filename.Contains(".xlsx"))
            {
                var newfilename = filename.Replace(".xlsx", ".pdf");
                var app = new Application();
                var wkb = app.Workbooks.Open(filePatgh + filename);
                if (!System.IO.File.Exists(filePatgh + newfilename))
                {                      
                    wkb.ExportAsFixedFormat(
                        XlFixedFormatType.xlTypePDF,
                        filePatgh + newfilename,
                        XlFixedFormatQuality.xlQualityStandard,
                        true, true, 1, 10, false);

                }
                wkb.Close();

            }
            if (filename.Contains(".xls"))
            {
                var newfilename = filename.Replace(".xls", ".pdf");
                var app = new Application();
                var wkb = app.Workbooks.Open(filePatgh + filename);

                if (!System.IO.File.Exists(filePatgh + newfilename))
                {
                    wkb.ExportAsFixedFormat(
                        XlFixedFormatType.xlTypePDF,
                        filePatgh + newfilename,
                        XlFixedFormatQuality.xlQualityStandard,
                        true,
                        true,
                        1,
                        10,
                        false);

                    // wkb.ExportAsFixedFormat(XlFixedFormatType.xlTypePDF, filePatgh + newfilename);
                }
                wkb.Close();
            }
            else
            {

                var objWorPdf = new Word2Pdf();
                var fromLocation = filePatgh + "\\" + filename;
                var fileExtension = Path.GetExtension(filename);

                var changeExtension = filename.Replace(fileExtension, ".pdf");
                object toLocation = filePatgh + "\\" + changeExtension;
                objWorPdf.InputLocation = fromLocation;
                objWorPdf.OutputLocation = toLocation;
                if (!System.IO.File.Exists(filePatgh + changeExtension))
                {
                    objWorPdf.Word2PdfCOnversion();
                }



            }
            return Json(filename, JsonRequestBehavior.AllowGet);
        }
        catch (Exception ex)
        {
            throw ;
        }
    }

NathanRO

Вы проверили, что Microsoft Excel и Word установлены на сервере?

Manas Bhardwaj

Нет. Это не очень хорошая идея. MS Office - это клиентское приложение.

Eman2020

да он установлен

Richard Deeming

Вы должны прочитать следующую статью базы знаний Microsoft:
Соображения по автоматизации работы офиса на стороне сервера[^]
В настоящее время корпорация Майкрософт не рекомендует и не поддерживает автоматизацию приложений Microsoft Office из любого автоматического, неинтерактивного клиентского приложения или компонента (включая ASP, ASP.NET, DCOM и NT Services), поскольку Office может демонстрировать нестабильное поведение и / или взаимоблокировку при запуске Office в этой среде.

В дополнение к установке Office на сервер, есть несколько обручей, через которые вам придется перепрыгнуть, чтобы иметь хоть какой-то шанс заставить ваш код работать. И даже если ты делать заставьте его работать, нет никакой гарантии, что он не перестанет работать в какой-то случайный момент в будущем.

1 Ответов

Рейтинг:
1

Bernhard Hiller

Как правильно заметил Ричард, MS Office здесь не используется. Но есть еще несколько вариантов, некоторые бесплатные, некоторые с ценником:
- OpenOffice / LibreOffice
"Path\soffice.exe" --конвертировать-в pdf "Path\Input.docx "--outdir " путь\выходная папка"
- TotalDocConverter
- PdfConvert
Обратите внимание, что многие конвертеры обещают работать на сервере, но терпят неудачу. И в зависимости от входных документов pdf-файлы могут немного отличаться от ваших входных файлов.
Я предлагаю вам сначала попробовать OpenOffice/LibreOffice, и только если вы не можете жить с этими незначительными проблемами, попробуйте другие программы.