Как игнорировать защищенные PDF-файлы?

#c# #pdfium

#c# #pdfium

Вопрос:

Я пишу в своем конвертере pdf-word, и я только что получил действительно странное исключение, которое не имеет для меня смысла.

Ошибка: исключение PdfiumViewer.PdfException:{«Неподдерживаемая схема безопасности»}

Это первый раз, когда появляется такое исключение. но я должен быть честным, что я никогда не пытался конвертировать более 3-4 файлов из pdf в Word, и сейчас я делаю более 100 файлов.

Вот мой код, я расстроен, если он слишком длинный, но я просто не знаю, в какой строке возникает ошибка

         public static void PdfToImage()
        {
            try
            {
                Application application = null;
                application = new Application();




                string path = @"C:UserschnikosDesktopTestBatch1";
                foreach (string file in Directory.EnumerateFiles(path, "*.pdf"))
                {
                    var doc = application.Documents.Add();
                    using (var document = PdfiumViewer.PdfDocument.Load(file))
                    {
                        int pagecount = document.PageCount;
                        for (int index = 0; index < pagecount; index  )
                        {
                            var image = document.Render(index, 200, 200, true);

                            image.Save(@"C:UserschnikosDesktopTestBatch1output"   index.ToString("000")   ".png", ImageFormat.Png);
                            application.Selection.InlineShapes.AddPicture(@"C:UserschnikosDesktopTestBatch1output"   index.ToString("000")   ".png");

                        }
                        string getFileName = file.Substring(file.LastIndexOf("\"));
                        string getFileWithoutExtras = Regex.Replace(getFileName, @"\", "");
                        string getFileWihtoutExtension = Regex.Replace(getFileWithoutExtras, @".pdf", "");

                        string fileName = @"C:UserschnikosDesktopTestBatch1"   getFileWihtoutExtension;
                        doc.PageSetup.PaperSize = WdPaperSize.wdPaperA4;

                        foreach (Microsoft.Office.Interop.Word.InlineShape inline in doc.InlineShapes)
                        {
                          .....
                        }
                        doc.PageSetup.TopMargin = 28.29f;
                        doc.PageSetup.LeftMargin = 28.29f;
                        doc.PageSetup.RightMargin = 30.29f;
                        doc.PageSetup.BottomMargin = 28.29f;

                        application.ActiveDocument.SaveAs(fileName, WdSaveFormat.wdFormatDocument);
                        doc.Close();

                        string imagePath = @"C:UserschnikosDesktopTestBatch1";
                        Array.ForEach(Directory.GetFiles(imagePath, "*.png"), delegate(string deletePath) { File.Delete(deletePath); });
                    }

                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: "   e);
            }
        }
    }
}
  

Комментарии:

1. Скорее всего, PDF-файл зашифрован / защищен методом, который Pdfium не поддерживает.

2. Есть несколько плагинов для шифрования PDF-файлов, например FileOpen и, как говорит @LasseV.Karlsen, Pdfium, похоже, их не поддерживает.

3. @LasseV.Karlsen вы правы, есть некоторые PDF-файлы, на открытие которых у меня нет разрешения! есть ли шанс как-то игнорировать их в коде?

4. вы можете поместить другой блок try-catch внутри foreach цикла и продолжить цикл при возникновении ошибки.

5. @mcy хм, есть пример .. или так? Я имею в виду, почему это сработает?