iTextSharp SetPageSize всегда возвращает true

63
7

если кто-то может сказать, это ошибка, или я что-то пропустил.

Использование этого кода в PowerShell:

$pdf = New-Object iTextSharp.text.Document
$pdf.SetPageSize([iTextSharp.text.PageSize]::A4)

возвращает True, что в порядке.

Это преднамеренная ошибка для целей отладки:

$pdf = New-Object iTextSharp.text.Document
$pdf.SetPageSize([iTextSharp.text.PageSize]::DD)

возвращает True, что НЕ ОК. А также не создавать никаких исключений.

Во втором примере PDF НЕ создается как следующая функция $ pdf.Open() полученное исключение (не связанное с типом страницы). заранее спасибо

спросил(а) 2021-01-25T19:26:01+03:00 4 месяца, 4 недели назад
1
Решение
63

Это две проблемы:

1) iTextSharp.text.Document исходный код подтверждает SetPageSize() всегда возвращает true. Только разработчики могут ответить, является ли это предполагаемым поведением или ошибкой. Для справки, здесь определение:

public virtual bool SetPageSize(Rectangle pageSize)
{
this.pageSize = pageSize;
foreach (IDocListener listener in this.listeners)
listener.SetPageSize(pageSize);
return true;
}

2) PowerShell, в отличие от.NET, с радостью будет использовать недопустимые имена enum. В вашем примере:

$pageSize = [iTextSharp.text.PageSize]::DD; # $pageSize -eq $null ($true; no Exception / error)

Другими словами, если вам нужно подтвердить действительный параметр PageSize в PowerShell, проверьте, используя что-то вроде выше.

ответил(а) 2021-01-25T19:26:01+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема