Отображение PDF-файла из Winform

Ограничение в SQL CE заключается в том, что оно не поддерживает подзапросы, возвращающие скалярное значение. Подзапросы, возвращающие набор, отлично разбираются.

Подзапрос в соединении в ответе Грейсона возвращает набор, поэтому он должен работать. Иногда скалярный подзапрос нельзя избежать в состоянии соединения. Используя 'IN' вместо '=', парсер может быть обманут.

См. Мой ответ на этот вопрос .

23
задан gsvirdi 8 February 2010 в 07:34
поделиться

6 ответов

Я бы поместил его в папку с программой, добавил ссылку в папку меню Пуск, чтобы обеспечить прямой доступ (без запуска инструмента) и просто по событию щелчка System.Diagnostics.Process.Start(@".\Manual.pdf");

Update

Ок, теперь мы подошли к совершенно новому вопросу: Как внедрить файл в мое приложение и запустить его?

На этот вопрос вы найдете несколько ответов здесь, но вот краткая версия:

  1. Щелкните правой кнопкой мыши на вашем проекте и выберите Add - Existing Item
  2. Выберите ваш файл (не щелкайте по нему дважды)
    • Нажмите на маленькую стрелку рядом с кнопкой Add и выберите Add As Link
  3. Дважды щелкните на Properties - Resources.resx
  4. Нажмите на маленькую стрелку рядом с Add Resource и выберите Add Existing File
  5. Выберите тот же файл снова в открытом диалоге
  6. Теперь вы можете получить доступ к файлу в вашем коде как byte[] from Properties.Resources.NameOfResource

С помощью этих шагов вы ссылаетесь на ваш файл там, где он существует в вашей структуре. Если вам нравится, что копия вашего pdf-файла будет помещена в подпапку Resources в вашем проекте, просто пропустите пункты один и два в приведенном выше списке.

Чтобы открыть ваш pdf, вам нужно записать байт[] на диск (возможно, с помощью Path.GetTempFileName()) и запустить его с помощью Adobe Reader. (Не забудьте удалить файл после использования)

7
ответ дан 29 November 2019 в 00:52
поделиться

Вы можете ссылаться на элемент управления Adobe Reader ActiveX и свяжите его со своим приложением.

Просто добавьте AcroPDF.PDF.1 в панель инструментов на вкладке «Компоненты COM» (щелкните правой кнопкой мыши панель инструментов и выберите Выбрать элементы ... ), затем перетащите экземпляр в Winform, чтобы попросите дизайнера создать код для вас. В качестве альтернативы, после добавления необходимой ссылки вы можете использовать следующий код:

AxAcroPDFLib.AxAcroPDF pdf = new AxAcroPDFLib.AxAcroPDF();
pdf.Dock = System.Windows.Forms.DockStyle.Fill;
pdf.Enabled = true;
pdf.Location = new System.Drawing.Point(0, 0);
pdf.Name = "pdfReader";
pdf.OcxState = ((System.Windows.Forms.AxHost.State)(new System.ComponentModel.ComponentResourceManager(typeof(ViewerWindow)).GetObject("pdfReader.OcxState")));
pdf.TabIndex = 1;

// Add pdf viewer to current form        
this.Controls.Add(pdf);

pdf.LoadFile(@"C:\MyPDF.pdf");
pdf.setView("Fit");
pdf.Visible = true;
22
ответ дан 29 November 2019 в 00:52
поделиться

Вы можете использовать элемент управления WebBrowser и позволить IE загружать для вас программу для чтения PDF, если она установлена ​​на машине.

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

11
ответ дан 29 November 2019 в 00:52
поделиться

Если у вашего пользователя установлен Adobe Reader (или любой другой PDF-ридер), вы можете использовать:

System.Diagnostics.Process.Start(
       "My-PDF-file.pdf");

Надеюсь, это поможет.

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

6
ответ дан 29 November 2019 в 00:52
поделиться

Я бы посоветовал преобразовать ваш PDF-файл в файл справки Microsoft, чтобы вам не требовалось устанавливать Adobe Reader (он содержит ошибки и имеет слишком много проблем с безопасностью). Вы не можете ожидать, что это будет у пользователей.

В ответ на комментарий начинающего:

Да, вам нужно будет создать файл справки в виде HTML-документа, а не pdf. Нет простого способа конвертировать PDF в HTML.

5
ответ дан 29 November 2019 в 00:52
поделиться

Возможно, можно будет встроить Adobe Reader в вашу форму как компонент ActiveX. Но это означает, что вам нужно убедиться, что Reader установлен на клиентском компьютере, чтобы это работало.

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

4
ответ дан 29 November 2019 в 00:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: