Предварительный просмотр PDF в C # - PullRequest
8 голосов
/ 16 марта 2010

Я ищу компонент .NET GUI (отличный от PDFsharp ), позволяющий просматривать PDF-документ на 1 странице .
По сути, мне нужно что-то похожее на PictureBox, где я могу загрузить растровые изображения и показать это.

Было бы замечательно, если бы этот компонент позволял увеличивать и перемещать изображение внутри.
Бесплатные решения предпочтительнее:)

Ответы [ 5 ]

5 голосов
/ 16 марта 2010

Другой вариант - использовать элемент управления WebBrowser в вашем графическом интерфейсе. Он будет использовать браузер для рендеринга PDF, но я бы пошел по этому пути, а не возился с компонентом Adobe Reader ActiveX.

Если вы не хотите, чтобы какой-либо тип программы чтения PDF-файлов был доступен на клиенте, вы также можете преобразовать его в графический файл через GhostScript и отобразить его в виде растрового изображения.

2 голосов
/ 06 января 2017

Вопрос довольно старый, но предлагаемые решения имеют существенные недостатки:

  • Элемент управления WebBrowser использует IE и может отображать документы PDF (это верно только в том случае, если установлен Adobe Reader)
  • GhostScript распространяется по лицензии AGPL и требует довольно дорогой лицензии для использования в закрытых / коммерческих проектах.
2 голосов
/ 16 марта 2010

вы можете использовать компонент ActiveX, который поставляется с Acrobat Reader.

Как визуализировать PDF с использованием C #

1 голос
/ 16 марта 2010

ImageGear для .NET

Не бесплатно. Возможно, имеет большую область, чем то, о чем вы беспокоитесь. Я надеюсь, что это как-то полезно.

0 голосов
/ 16 марта 2010

Quick PDF Library , мои компании PDF SDK, помогут вам рендерить файлы PDF. Это не бесплатная программа, но лицензия позволяет бесплатно распространять скомпилированные приложения, которые вы создаете с ее помощью. Найти бесплатные / открытые исходные компоненты для рендеринга PDF-файлов немного сложнее, чем другие базовые операции с PDF-файлами, поскольку рендеринг PDF-файлов может быть довольно сложным.

Ниже приведен пример исходного кода на C #, который показывает, как отобразить PDF-файл в графическом окне на форме.

private void Form1_Load(object sender, EventArgs e)
{
    QuickPDFAX0718.PDFLibrary pdf = new QuickPDFAX0718.PDFLibrary();

    qp.UnlockKey("......Licence Key......");

    // Open PDF File
    int Handle = qp.DAOpenFile("C:\\sample.pdf", null);

    // Get Total Number of Pages in a PDF File
    int PageCount = qp.DAGetPageCount(Handle);

    int PageNo = 1;

    // It will get Reference of page 1 from PDF file
    int PageRefNo = qp.DAFindPage(Handle, PageNo);

    // You can change this parameter for Zoom In/Zoom Out purpose
    int Zoom = 76;
    double pageWidth = qp.DAGetPageWidth(Handle, PageRefNo) / Zoom;
    double pageHeight = qp.DAGetPageHeight(Handle, PageRefNo) / Zoom;

    // DPI use for rendering the page. Increase DPI will increate quality of image
    int dpi = 92;

    // Calculate Dimension of final output image
    Bitmap b = new Bitmap(Convert.ToInt32(pageWidth * dpi), Convert.ToInt32(pageHeight * dpi));

    // This will Draw render image on GDI
    using (Graphics g = Graphics.FromImage(b))
    {
    IntPtr dc = g.GetHdc();
    qp.DARenderPageToDC(Handle, PageRefNo, dpi, (int)dc);
    g.ReleaseHdc(dc);
    }

    // Assigne rendered image to PictureBox Control which will display PDF on Windows Form.
    pictureBox1.Image = b;
    pictureBox1.BorderStyle = BorderStyle.Fixed3D;
}

Библиотека не содержит встроенных функций, которые помогут вам с масштабированием, но, поскольку вы отображаете PDF как изображение BMP, вы можете довольно легко позаботиться о масштабировании.

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