Запустить процесс из потока

У меня есть поток памяти, содержащий файл PDF.

Можно ли просмотреть PDF без сохранения на жесткий диск? Process.Start() принимает только путь, а не поток.

Спасибо


person Alexandre Pepin    schedule 28.01.2010    source источник
comment
См. этот связанный вчерашний пост: windows-for/2144775#2144775" title="открыть в памяти строку xml в виде книги Excel без сохранения пользовательских окон для"> stackoverflow.com/questions/2144744/   -  person Jay    schedule 28.01.2010


Ответы (4)


Только реализовав свою собственную псевдофайловую систему на С#, каким-то образом смонтировав ее как диск в Windows и заставив ее перехватить открытый файл и передать содержимое вашего MemoryStream. Абсолютно 100% конечно не стоит усилий.

person David M    schedule 28.01.2010

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

person Oded    schedule 28.01.2010

Конечно, это, безусловно, возможно. Только не через Process Start и Adobe Reader (я предполагаю, что вы вызываете Adobe или что-то подобное)

Если вы используете .NET или Java, вам просто нужно найти компонент для просмотра PDF, есть из чего выбрать, Google даст вам много ссылок, у Gnostice есть хороший, но дорогой. Как только вы найдете подходящий элемент управления, просмотрите PDF-файл прямо из своего приложения.

person Tim Jarvis    schedule 28.01.2010
comment
Я собирался предложить что-то вроде этого. Найдите компонент для просмотра PDF (если вы можете автоматизировать сам Reader, тем лучше) и посмотрите, может ли он загружаться из IStream. - person Ian Boyd; 29.01.2010

Если есть, то process.Start не подойдет, но рискну предположить, что его нет. Если не существует специального API PDF, который позволяет (я сомневаюсь) каким-то образом сохранить его на диск.

person Yossi Dahan    schedule 28.01.2010