Na pasta do executável, eu tenho o gswin32c.exe e o gsdll32.dll, que pode ser baixado na página ghostScript.com
o trecho de código abaixo atribui a senha a um novo pdf, a partir do que foi gerado pelo Fortes.
vcomando := 'gswin32c -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dBATCH -dNOPROMPT -dNOPAUSE -dQUIET'+
' -sOwnerPassword=7B51BE9D-3960-4F6C-968E-8ED381DC061C' + // essa senha seria para quem gerou o PDF ( pode ser qualquer outra coisa )
' -sUserPassword=' + vPartedoCPF + // variável com a senha que vai ser requisitada ao destinatário
' -sOutputFile=' + 'boleto_sem_senha.pdf' +
' ' + 'boleto_com_senha.pdf';
ExecuteAndWait(vcomando,'', SW_HIDE);
A função ExecuteAndWait eu usei da biblioteca Jedi, na JvJCLUtils,
mas deve haver outras disponíveis também.
O interessante é que ocorre tudo de forma silenciosa.