Активные отчеты 6 Метод PdfExport.Export () создает исключение ArgumentOutOfRangeException после обновления для создателей Windows 10 - PullRequest
0 голосов
/ 12 октября 2019

Проблема

У меня есть код, использующий класс Active Reports 6 PdfExport для создания отчета в формате PDF. Я запускаю этот код на компьютере с Windows 10. После обновления Creators код начал выдавать ArgumentOutOfRangeException.

Код работал нормально при запуске на Windows Server, но не на моей машине с Windows 10.

Также я попыталсяпереключение на класс XlsExport, и отчет работал нормально.

Код

public static void ExportPDF(ActiveReport report, Stream stream)
{

        try
        {
            report.Run();
            using (PdfExport pdf = new PdfExport())
            {
                // exception occurs here
                pdf.Export(report.Document, stream);
            }

        }
        catch (Exception)
        {
            throw;
        }

}

Сведения об ошибке

ArgumentOutOfRangeException

Сообщение

Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Stacktrace

   at System.ThrowHelper.ThrowArgumentOutOfRangeException(ExceptionArgument argument, ExceptionResource resource)
   at System.Collections.Generic.List`1.get_Item(Int32 index)
   at #mqc.#Vqc.#RZc(Int32 fontIndex, String fontName, FontStyle fontStyle, Single sizeInPoints, Boolean vertical)
   at DataDynamics.ActiveReports.Export.Pdf.PdfExport.#7pk(Document document, Stream stream, String pageRange)
   at DataDynamics.ActiveReports.Export.Pdf.PdfExport.Export(Document document, Stream stream, String pageRange)
   at DataDynamics.ActiveReports.Export.Pdf.PdfExport.Export(Document document, Stream stream)
...

1 Ответ

0 голосов
/ 12 октября 2019

После прочтения этого поста на форуме поддержки Active Reports и некоторых проб и ошибок я обнаружил исправление.

Решение

Откройте дизайнер отчетовКод файла позади. В моем случае это было в файле SomeReport.rpx.vb.

Найдите область сгенерированного дизайнером кода:

#Region "ActiveReports Designer generated code"
    Public WithEvents Detail1 As DataDynamics.ActiveReports.Detail
    Friend WithEvents ReportHeader1 As DataDynamics.ActiveReports.ReportHeader
    Friend WithEvents ReportFooter1 As DataDynamics.ActiveReports.ReportFooter
    ....

1. Декларации стиля требуют font-family

Внутри этой области кода ищите экземпляры Style свойств:

Me.Label2.Style = "font-family: Arial; color: Black; font-size: 10pt; font-weight: bold; text-align: right; ddo-char-set: 1"

Необходимо проверять каждые Style собственность включает в себя font-family. Просмотрите свой код и исправьте все, что отсутствует.

2. Декларации таблицы стилей также требуют font-family

Также ищите экземпляры кода, подобного этому, и убедитесь, что у них также определен font-family.

Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: Times New Roman; font-style: inherit; font-variant: inherit; font-weight: bold; font-size: 16pt; font-size-adjust: inherit; font-stretch: inherit", "Heading1"))

3. Обратите внимание на font-family: inherit

Вам нужно явно определить font-family, если вы видите font-family: inherit где-нибудь в разработанном коде, замените его на имя шрифта.

Заключение

Как только вы добавите все недостающие font-family, ваш отчет должен работать.

...