#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 хм, есть пример .. или так? Я имею в виду, почему это сработает?