Использование 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 отношениях
- Добавление \ s?чтобы регулярное выражение получало только регулярное выражение, получая больше совпадений
- Несмотря на вышесказанное, почему возникает исключение в зависимости от результата соответствия регулярному выражению?
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