PDF и Silverlight, могут ли они работать вместе? - PullRequest
4 голосов
/ 13 января 2012

У меня есть проект, в котором я создаю образцы документов. Код здесь:

 private void btnExcel_Click(object sender, System.Windows.RoutedEventArgs e)
    {
        if (AutomationFactory.IsAvailable)
        {
            dynamic excel = AutomationFactory.CreateObject("Excel.Application");
            excel.Visible = true;

            dynamic workbook = excel.workbooks;
            workbook.Add();

            dynamic sheet = excel.ActiveSheet;
            dynamic cell = null;
            int i;
            int z = 20;

            for (i = 1; i <= 20; i++)
            {
                cell = sheet.Cells[i, 1];
                cell.Value = i.ToString();

                cell = sheet.Cells[i, 2];
                cell.Value = z.ToString();

                z--;
            }

        }

    }

Как видите, это для документов Excel. Есть ли способ, как я могу что-то вроде этого и экспортировать в PDF-файлы? Спасибо за понимание.

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Конечно, вы можете. Но почему?! Как я понимаю, с AutomationFactory.CreateObject вы можете сделать это, когда на клиентском компьютере установлены Excel или PDF.

Но, имея дело с веб-приложением (особенно если это не корпоративное приложение), вы хотите видеть pdf / xls / xlsx / ... где угодно и можете передавать то, что установлено на клиентском компьютере или нет.

У меня похожая ситуация для одного из моих проектов. Мы используем формат XPS для отображения в silverlight, потому что он имеет встроенную поддержку. И другие форматы конвертируются в xps.

Есть нюансы в конвертации, например. для документов Excel я думаю, что лучший способ - конвертировать каждый лист отдельно и использовать специальный вид просмотра, который отличается от просмотра, например, для документов Word или PDF.

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

В любом случае, особенно без участия третьих лиц, потребуются огромные усилия для реализации средства просмотра PDF на silverlight. Поэтому я предлагаю вам использовать xps для просмотра. Но когда вам нужно иметь PDF-файлы для загрузки, используйте XPS для просмотра и PDF для загрузки. В этом случае ваши конвертеры будут производить 2 формата для каждой позиции.

Например, посмотрите на

http://firstfloorsoftware.com/blog/announcement-document-toolkit-for-silverlight/

http://silverpdf.codeplex.com/

http://www.componentone.com/SuperProducts/PdfViewerSilverlight/

2 голосов
/ 13 января 2012

Да, вы можете.

Вы можете вызвать операцию службы WCF, передав ей все необходимые данные. Затем выполните все, что требуется для создания PDF-файла. После того, как вы это сделали, у вас есть два варианта:

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

Надеюсь, это было то, что вы искали.

...