C # Процессный объект не открывает PDF - PullRequest
0 голосов
/ 21 апреля 2009

Я динамически создаю файл PDF. После создания я хочу открыть файл PDF. Для этого я использую этот код:

    System.Diagnostics.Process p = new System.Diagnostics.Process();
    p = new System.Diagnostics.Process();

    p.StartInfo.FileName = CreatePDF(); // method that creats my pdf and returns the full path

    try
    {
        if (!p.Start())
            Controller.Error = "Opening acrobat failed..";
    }
    catch(Exception ex)
    {
        Controller.Error = "Create PDF::" + ex.Message;
    }

При выполнении этого кода ничего не происходит, и я не получаю никаких ошибок. Что я делаю не так?

Ответы [ 3 ]

2 голосов
/ 21 апреля 2009

UPDATE:

Поскольку это приложение ASP.NET, этот код не будет работать. Он не может взаимодействовать с рабочим столом сервера, на котором расположен ASP.NET.

Если целью является отображение PDF-файла для пользователей, получающих доступ из браузера, то код для этого совершенно другой.

2 голосов
/ 21 апреля 2009

Asp.net? Я бы взял поток памяти и записал его в поток ответов следующим образом:

Response.ContentType = "application/pdf"; 
Response.AddHeader("content-disposition", string.Format("attachment; filename={0}", file.FileName)); 
Response.BinaryWrite(file.FileBytes); 
Response.Flush(); 
Response.End();

Для оконных форм я бы взглянул на использование Foxit Reader. У меня есть сообщение в блоге о печати напрямую из Foxit. Вы можете открыть аналогично.

РЕДАКТИРОВАТЬ: Чтобы создать вложение, вы добавляете ссылку на System.Net.Mail и делаете что-то вроде:

var stream = GetTheFileAsStream();
var attachment = new Attachment(stream);
0 голосов
/ 21 апреля 2009

Мне не ясно, является ли это приложением ASP.NET или Winforms. Если Winforms то ...

using (Process p = new Process())
{
    p.StartInfo.RedirectStandardOutput = false;
    p.StartInfo.FileName = @"C:\foo.pdf";
    p.StartInfo.UseShellExecute = true;
    p.Start();
    p.WaitForExit();             
}

... будет нормально работать.

Если это ASP.NET MVC, вы должны посмотреть на тип FileResult и метод File контроллера ...

public ActionResult GetFile()
{
    return File("foo.pdf", "application/pdf");
}

... поскольку это именно то, для чего это нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...