2016-05-03 3 views
0

В моей программе я пишу PDF-файлы с указанным мной паролем. Это важно, поскольку я знаю пароль для файлов PDF, которые я пытаюсь открыть (не взламывая его или что-то еще). I пароль защищает PDF так;Открытие защищенного паролем PDF Использование PDFsharp

Application.Current.Dispatcher.InvokeAsync(new Action(() => 
{ 
    string sourcePath = sourceFilePath; 
    string targetPath = @"C:\ExamplePath"; 

    useReturnedOHPath = true; 

    string sourceFile = Path.Combine(sourcePath, fileName); 

    var document = PdfReader.Open(sourceFile); 
    var securitySettings = document.SecuritySettings; 
    securitySettings.UserPassword = "ExamplePass"; 

    securitySettings.PermitAccessibilityExtractContent = false; 
    securitySettings.PermitAnnotations = false; 
    securitySettings.PermitAssembleDocument = false; 
    securitySettings.PermitExtractContent = false; 
    securitySettings.PermitFormsFill = true; 
    securitySettings.PermitFullQualityPrint = false; 
    securitySettings.PermitModifyDocument = true; 
    securitySettings.PermitPrint = false; 

    document.Save(sourceFile); 
    MessageBox.Show(sourceFile); 

    string cleanPath = CleanFileName(selectedPerson.ID + " " + DateTime.Now.ToString("dd-MM-yyyy hh-mm-ss") + ".pdf"); 
    ohDestFile = Path.Combine(targetPath, cleanPath); 

    File.Copy(sourceFile, ohDestFile, true); 
}), DispatcherPriority.ContextIdle); 

Из-за этого я знаю, что пароль к PDF является ExamplePass. Теперь, когда я пришел, чтобы открыть PDF из моей программы, я попробовал несколько методов, просто;

Однако понятно, что это просто открывает Acrobat и запрашивает пароль. Я также попытался добавить в:

PdfDocument document = PdfReader.Open(selectedOHRecord.Path, "ExamplePass"); 

который берется из самого сайта PDFsharp, однако, когда я называю это ничего не происходит вообще. Есть ли способ открыть PDF-файл и ввести пароль для пользователя, чтобы они не вводили его?

+0

Какова цель вашего пароля? –

+0

@PDFsharpTeam Мы хотим, чтобы файл PDF не открывался за пределами программы, в которой он открыт, т. Е. Не позволяет пользователю открыть файл в проводнике Windows. – CBreeze

+0

API PDFsharp полностью независим от Adobe. Невозможно передать пароль из PDFsharp в Adobe Reader. И AFAIK нет способа передать пароль Adobe Reader с помощью командной строки. –

ответ

0

Если в файле PDF есть пароль пользователя, Adobe Reader запросит пароль.

Ваш звонок PdfReader.Open не передает пароль Adobe Reader, поэтому он снова запрашивает.

Вы можете установить пароль владельца вместо пароля пользователя. Когда Adobe Reader откроет файл, не будет приглашения, но редактирование будет предотвращено.

Или удалите пароль, как показано в образце «Снять защиту», сохраните файл PDF без пароля во временный файл и откройте его с помощью Adobe Reader. Обратите внимание, что пользователь может сохранить файл из Adobe Reader в папку по своему выбору, чтобы сохранить незащищенную копию.
http://www.pdfsharp.net/wiki/UnprotectDocument-sample.ashx

Смежные вопросы