rikidev Ответов: 2

Отображение PDF с помощью C# из memorystream


Привет, ребята, тогда я объясню, что я должен сделать: внутри переменной Immagine есть pdf, я должен преобразовать его в память steam и просмотреть его через приложение по умолчанию из операционной системы, чтобы открыть pdf, у вас есть какие-нибудь советы о том, как это сделать?

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

using System;
using System.Drawing;
using System.IO;

namespace App.View
{
    public partial class VisualizzazioneDocumenti : MaterialSkin.Controls.MaterialForm
    {
        public byte[] Immagine;

        public VisualizzazioneDocumenti()
        {
            InitializeComponent();
        }

        private static Bitmap ByteToImage(byte[] blob)
        {
            MemoryStream mStream = new MemoryStream();
            byte[] pData = blob;
            mStream.Write(pData, 0, Convert.ToInt32(pData.Length));
            Bitmap bm = new Bitmap(mStream, false);
            mStream.Dispose();
            return bm;
        }

        private void VisualizzazioneDocumenti_Load(object sender, EventArgs e)
        {
            this.pictureBoxImmagine.Image = ByteToImage(Immagine);
        }
    }
}

2 Ответов

Рейтинг:
9

Nithi999

Лучше откройте pdf-файл с помощью приложения по умолчанию.

Код:

System.Diagnostics.Process.Start(@"c:\MYPDF.pdf");


или

Попробуйте добавить COM-компоненты Adobe Reader или другого средства просмотра Pdf.


Рейтинг:
19

OriginalGriff

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

Есть некоторые доступные которые сделают это: Компонент бесплатный просмотрщик PDF - читать/смотреть/Распечатать PDF файл в C#VB.NET | шпиль.PDFViewer[^] предоставляет "community edition", который ограничен 10 страницами, но который может работать непосредственно из потока. Там могут быть и другие, но вам придется работать с Google, чтобы узнать.


rikidev

спасибо

OriginalGriff

Всегда пожалуйста!