# PDF Generation with password

**URL:** <https://www.ruby-forum.com/t/pdf-generation-with-password/160900>\
**Category:** Rails\
**Created:** [February 20, 2009, 8:10pm UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900 "2009-02-20T20:10:10Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![CiriusMex](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@CiriusMex](https://www.ruby-forum.com/u/CiriusMex)\
**Post date:** [February 20, 2009, 8:10pm UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900/1 "2009-02-20T20:10:10Z")

</div>

Hi, I have a little issue here. I’m working on an eBook site and need  
to generate PDFs. I managed it using PDF::Writer and did the trick  
quite well but now I want to generate PDFs with a password access.  
After checking on internet, I saw that PDF::Writer encrypt method was  
removed (for encryption algorithm was cracked or something like that).  
Had a look at the Prawn plugin but it has no security module and can’t  
be used to do so.

Is there any way to create password protected PDFs with Ruby?

Other problem, I want to modifiy the PDF generation to create new PDFs  
by copying PDF files already existing and adding a front page with the  
customer name and a little message. I managed read PDF files and copy  
the content in a new PDF but I’m losing all the format (the result is  
just a new PDF with the text of the original PDF but with no  
format…). Anyone know how I can copy a PDF and add this front page?

Thanks for your help,  
Olivier.

---

<div class="post-metadata">

**Author:** ![CiriusMex](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@CiriusMex](https://www.ruby-forum.com/u/CiriusMex)\
**Post date:** [February 20, 2009, 10:13pm UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900/2 "2009-02-20T22:13:23Z")

</div>

Hi Oliver,

On Fri, 2009-02-20 at 11:09 -0800, CiriusMex wrote:

> Other problem, I want to modifiy the PDF generation to create new PDFs  
> by copying PDF files already existing and adding a front page with the  
> customer name and a little message. I managed read PDF files and copy  
> the content in a new PDF but I’m losing all the format (the result is  
> just a new PDF with the text of the original PDF but with no  
> format…). Anyone know how I can copy a PDF and add this front page?

I worked through a very similar set of issues a couple of years ago.  
Ended up using a system call to pdftk ([PDFtk - The PDF Toolkit](http://www.accesspdf.com/pdftk/)).  
It’ll do what you need very easily.

HTH,  
Bill

---

<div class="post-metadata">

**Author:** ![CiriusMex](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@CiriusMex](https://www.ruby-forum.com/u/CiriusMex)\
**Post date:** [February 20, 2009, 11:28pm UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900/3 "2009-02-20T23:28:01Z")

</div>

Thanks a lot, I’m gonna check it right now ^^

Olivier.

---

<div class="post-metadata">

**Author:** ![CiriusMex](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@CiriusMex](https://www.ruby-forum.com/u/CiriusMex)\
**Post date:** [February 21, 2009, 12:15am UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900/4 "2009-02-21T00:15:38Z")

</div>

Ok, this toolkit seems pretty cool but my problem is that I want todo  
everything using Ruby, so I need a plugin or something that can  
connect to ruby in order to do the PDF copy etc using a ruby  
function…

---

<div class="post-metadata">

**Author:** ![CiriusMex](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@CiriusMex](https://www.ruby-forum.com/u/CiriusMex)\
**Post date:** [February 21, 2009, 1:36am UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900/5 "2009-02-21T01:36:01Z")

</div>

I agree with Bill. pdftk has been an invaluable tool for me when  
working with pdfs, and can easily be wrapped for use in ruby.

Altho you’ll want to add checks to ensure safety of params your  
passing to pdftk, and check for errors returned, …, you could do  
something like:

…  
def add\_user\_pw\_to\_pdf(infile, pw, outfile)  
`pdftk #{infile} output #{outfile} user_pw #{pw} 2>&1`  
end

def combine\_pdfs(infiles, outfile)  
`pdftk #{infiles.join(' ')} output #{outfile} 2>&1`  
end  
…

which you could then call like:

…  
add\_user\_pw\_to\_pdf(‘test.pdf’, ‘supersecret’, ‘test\_with\_pss.pdf’)  
…  
combine\_pdfs([‘a.pdf’, ‘b.pdf’, ‘c.pdf’], ‘abc.pdf’)  
…

Jeff

---

<div class="post-metadata">

**Author:** ![CiriusMex](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/90ced4/32.png) [@CiriusMex](https://www.ruby-forum.com/u/CiriusMex)\
**Post date:** [February 21, 2009, 6:28pm UTC](https://www.ruby-forum.com/t/pdf-generation-with-password/160900/6 "2009-02-21T18:28:44Z")

</div>

Ok, I didn’t understood it could be used with ruby, will check how to  
do that, thanks again for your help 😉
