В FastReport 2020.1 добавилась возможность изменять параметры экспорта. Для этого нужно подписаться на событие ExportParameters в WebReport.Report.
До сих пор библиотека FastReport.Net не предоставляла доступ к параметрам экспорта. Вернее, предоставляла, но лишь к части параметров, и с помощью отдельных свойств веб отчета. Все эти свойства свалены скопом и работать с ними с помощью intelisense совсем неудобно, да и охватывают они не все потребности пользователей. Поэтому было решено дать пользователям доступ ко всем свойствам объекта экспорта, с помощью специального события ExportParameters. В обработчике этого события вы можете получить объект экспорта и задать все нужные вам свойства. Таким образом появилась возможность настроить экспорт точнее за счет ранее недоступных свойств. Вот как можно использовать новое событие:
1 2 3 4 5 6 7 8 9 |
WebReport.Report.ExportParameters += (sender, e) => { PDFExport export = e.Export as PDFExport; if (export != null) { export.Title = "test"; export.DefaultPage = 2; } }; |
В этом примере мы лишь изменили заголовок и страницу, отображаемую по умолчанию. Обратите внимание, что при обработке мы ожидаем экспорт типа PDF, а значит этот код не сработает для другого типа экспорта. В одном обработчике вы можете задать настройки для нескольких типов экспорта сразу.
А теперь, давайте оценим на примере PDF экспорта насколько расширились доступные свойства экспорта. Ранее WebReport предлагал нам набор свойств экспорта, которые по сути являлись обертками над свойствами объекта экспорта PDFExport:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
public string PdfTitle { get; set; } public string PdfAuthor { get; set; } public string PdfSubject { get; set; } public string PdfKeywords { get; set; } public string PdfCreator { get; set; } public string PdfProducer { get; set; } public string PdfUserPassword { get; set; } public bool PdfPrintScaling { get; set; } public string PdfOwnerPassword { get; set; } public bool PdfAllowModify { get; set; } public bool PdfAllowCopy { get; set; } public bool PdfAllowAnnotate { get; set; } public bool PdfA { get; set; } public bool PdfShowPrintDialog { get; set; } public bool PdfImagesOriginalResolution { get; set; } public bool PdfJpegCompression { get; set; } public bool PdfAllowPrint { get; set; } public bool PdfCenterWindow { get; set; } public bool PdfHideWindowUI { get; set; } public bool PdfFitWindow { get; set; } public bool PdfEmbeddingFonts { get; set; } public bool PdfBackground { get; set; } public bool PdfInteractiveForms { get; set; } public bool PdfPrintOptimized { get; set; } public bool PdfOutline { get; set; } public bool PdfDisplayDocTitle { get; set; } public bool PdfHideToolbar { get; set; } public bool PdfHideMenubar { get; set; } public bool PdfTextInCurves { get; set; } |
Надо сказать, что этот список свойств включает в себя основные и самые востребованные, но не все. Многие пользователи хотят больше. И теперь, с новым событием ExportParameters им доступен полный набор свойств:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
public bool HideWindowUI { get; set; } - скрывать пользовательский интерфейс; public bool ShowPrintDialog { get; set; } – показывать диалог печати; public bool HideToolbar { get; set; } – скрывать панель инструментов в PDF просмотрщике; public bool HideMenubar { get; set; } – скрывать меню в PDF просмотрщике; public GradientInterpolationPointsEnum GradientInterpolationPoints { get; set; } – точки интерполяции градиента; public bool FitWindow { get; set; } – разрешить растягивать окно; public bool CenterWindow { get; set; } – центровать окно; public bool PrintScaling { get; set; } – отображать масштабирование; public bool Outline { get; set; } – отображать содержание; public MagnificationFactor DefaultZoom { get; set; } – увеличение по умолчанию; public int RichTextQuality { get; set; } – качество текста в объекте RichText; public bool Compressed { get; set; } – сжимать файл; public bool TransparentImages { get; set; } - прозрачные изображения; public bool DisplayDocTitle { get; set; } – отображать заголовок документа; public int DefaultPage { get; set; } – номер страницы по умолчанию; public byte[] ColorProfile { get; set; } – цветовой профиль; public ExportType ExportMode { get; set; } – тип экспорта; public bool InteractiveForms { get; set; } – разрешить интерактивные формы; public bool IsDigitalSignEnable { get; set; } – разрешить цифровую подпись; public bool SaveDigitalSignCertificatePassword { get; set; } – сохранять сертификат цифровой подписи; public X509Certificate2 DigitalSignCertificate { set; } – сертификат цифровой подписи; public string DigitalSignCertificatePath { get; set; } – путь к сертификату цифровой подписи; public string DigitalSignCertificatePassword { set; } – пароль сертификата цифровой подписи; public string DigitalSignLocation { get; set; } – расположение цифровой подписи; public string DigitalSignReason { get; set; } – основание цифровой подписи; public string DigitalSignContactInfo { get; set; } – контактная информация цифровой подписи; public CurvesInterpolationEnum CurvesInterpolation { get; set; } – интерполяция кривых; public bool AllowAnnotate { get; set; } – разрешить аннотацию; public bool AllowCopy { get; set; } – разрешить копирование; public bool AllowModify { get; set; } – разрешить редактирование; public bool AllowPrint { get; set; } – разрешить печать; public GradientQualityEnum GradientQuality { get; set; } – качество градиента (количество оттенков); public PdfStandard PdfCompliance { get; set; } – соответствие стандарту PDF; public bool EmbeddingFonts { get; set; } – разрешить встроенные шрифты; public bool Background { get; set; } – разрешить фон; public CurvesInterpolationEnum CurvesInterpolationText { get; set; } – интерполяция кривых текста; public PdfColorSpace ColorSpace { get; set; } – цветовое пространство; public bool ImagesOriginalResolution { get; set; } – использовать оригинальное разрешение изображений; public bool PrintOptimized { get; set; } – оптимизация печати; public bool JpegCompression { get; set; } – сжатие Jpeg изображений; public bool TextInCurves { get; set; } – строить тест с помощью кривых; public string Title { get; set; } – заголовок; public string UserPassword { get; set; } – пароль для зашифрованного документа; public int JpegQuality { get; set; } – качество Jpeg изображений; public string OwnerPassword { get; set; } – пароль владельца; public string Producer { get; set; } – продюссер; public bool SvgAsPicture { get; set; } – Svg объекты отображать как картинки; public string Keywords { get; set; } – ключевые слова; public string Subject { get; set; } – тема документа; public string Author { get; set; } – автор; public string Creator { get; set; } – создатель; |
И это без учета свойств общих для всех экспортов.
Давайте подведем итог, какие же преимущества нам дает новое событие ExportParameters. Используя объект для конкретного экспорта нам доступны только свойства этого экспорта. Ранее требовалось из общего списка свойств всех возможных экспортов выбирать нужные, что не всегда удобно, потому что названия некоторых свойств не очевидны для идентификации экспорта. Вы увидите полный список доступных свойств используя Intellisense или вы видите полный список доступных свойств.