iText Error: обнуляемый объект должен иметь значение - PullRequest
0 голосов
/ 11 мая 2018

Использование iText7 PDFSweep, реализация на C #.

При редактировании iText появляется для исключения «System.InvalidOperationException: объект Nullable должен иметь значение» в зависимости от регулярного выражения, используемого для редактирования.

Например, приведенный ниже код вызывает исключение:

String regex = @"(\s?7-\d\d\d\d)";
CompositeCleanupStrategy strategy = new CompositeCleanupStrategy();
strategy.Add(new RegexBasedCleanupStrategy(regex).SetRedactionColor(ColorConstants.RED));
PdfDocument pdf = new PdfDocument(new PdfReader(srcFile), new PdfWriter(outFile));
PdfAutoSweep autoSweep = new PdfAutoSweep(strategy);
autoSweep.CleanUp(pdf);  
pdf.Close();

Однако все работает нормально, если я удалю "\ s?"от регулярного выражения.
Это смущает меня в 2 отношениях

  1. Добавление \ s?чтобы регулярное выражение получало только регулярное выражение, получая больше совпадений
  2. Несмотря на вышесказанное, почему возникает исключение в зависимости от результата соответствия регулярному выражению?

Edit (Добавление трассировки стека):

Error Msg = Nullable object must have a value.
   at System.ThrowHelper.ThrowInvalidOperationException(ExceptionResource resource)
   at iText.Kernel.Pdf.Canvas.Parser.Listener.RegexBasedLocationExtractionStrategy.GetResultantLocations()
   at iText.PdfCleanup.Autosweep.CompositeCleanupStrategy.GetResultantLocations()
   at iText.PdfCleanup.Autosweep.PdfAutoSweep.GetPdfCleanUpLocations(PdfDocument doc)
   at iText.PdfCleanup.Autosweep.PdfAutoSweep.CleanUp(PdfDocument pdfDocument)
   at pdf_redactor.Program.Main(String[] args) in G:\prj\pdf_redactor\pdf_redactor\Program.cs:line 77
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...