[reportlab-users] PDF encryption

J. R. Carroll jrcarroll at jrcresearch.net
Mon Mar 25 17:08:23 EDT 2013


Hmm I take that back... well only part of it...

from reportlab.lib import pdfencrypt
from reportlab.pdfgen import canvas

enc = pdfencrypt.StandardEncryption("", canPrint=0, canCopy=0)
c = canvas.Canvas("hello-enc.pdf", encrypt=enc)
c.drawString(100, 100, "Hello World")
c.showPage()
c.save()

This also works (I went back and reread that section (RTFM on myself -
that's rare!). It works fine using Adobe Reader in Win7-64bit. No
password prompt to view, but cannot copy/print. If you are having problems
getting this to work, it might be your renderer - it's a 'standard' that
they can decide to or not to follow.

-J


----


J. R. Carroll
Independent Researcher through Hurtz Labs
Research Methods, Test Development, and Statistics
www.jrcresearch.net
www.ontvp.com
Cell: (650) 776-6613
Email: jrcarroll at jrcresearch.net
jrcarroll at hurtzlab.com
jrc.csus at gmail.com
<https://www.facebook.com/J.R.Car>
<https://twitter.com/jNammer><http://www.linkedin.com/in/jrcarroll>



On Mon, Mar 25, 2013 at 5:01 PM, J. R. Carroll <jrcarroll at jrcresearch.net>wrote:


> Hi Dinu,

>

> This worked just fine for me... I think what you want is "ownerPassword"

> not "userPassword". This gives permissions to view, but I am unable to

> PRINT or COPY. The first parameter you are passing (non keyword), is for

> userPassword. I just set it to an empty string and it seems to work just

> fine.

>

> Also PLEASE BE AWARE... I develop in Linux and test in Windows (cross-test

> in most cases). I first tested this in Linux and it did not work...

> suspecting that it was up to the rendering program to honor this (and not

> the fault of reportlab/Postscript), I then moved it over to Windows and

> opened it up with Adobe Reader and it worked like a charm. I've never used

> this feature before, so if someone sees a violation of some kind, mea

> culpa.

>

>

> from reportlab.lib import pdfencrypt

> from reportlab.pdfgen import canvas

>

> enc = pdfencrypt.StandardEncryption("", ownerPassword="secret",

> canPrint=0, canCopy=0)

> c = canvas.Canvas("hello-enc.pdf", encrypt=enc)

> c.drawString(100, 100, "Hello World")

> c.showPage()

> c.save()

>

>

> You might want to (re)read the section on "Encryption" from <http://www.reportlab.com/docs/reportlab-userguide.pdf>

> here <http://www.reportlab.com/docs/reportlab-userguide.pdf> (your

> example is near identical, so I suspect you were already referencing this,

> but just making sure you got all the tools you need!).

>

> Let me know if you need more help (or if I missed the mark),

>

> -J

>

> ----

>

>

> J. R. Carroll

> Independent Researcher through Hurtz Labs

> Research Methods, Test Development, and Statistics

> www.jrcresearch.net

> www.ontvp.com

> Cell: (650) 776-6613

> Email: jrcarroll at jrcresearch.net

> jrcarroll at hurtzlab.com

> jrc.csus at gmail.com

> <https://www.facebook.com/J.R.Car> <https://twitter.com/jNammer><http://www.linkedin.com/in/jrcarroll>

>

>

>

> On Mon, Mar 25, 2013 at 4:41 PM, Dinu Gherman <gherman at darwin.in-berlin.de

> > wrote:

>

>> I'm raising this question below again, since there was no response and

>> with the current activities I'm afraid, it will be forgotten (but I do

>> not want to raise it as a bug).

>>

>> Regards,

>>

>> Dinu

>>

>> > I'm trying to create an "encrypted" PDF in which users can view all

>> > pages without knowing any password, but perform certain operations only

>> > when they have the user password. With the code below from the user

>> > guide (with minimal changes) I can always even view the content only

>> > after entering the user password:

>> >

>> > from reportlab.lib import pdfencrypt

>> > from reportlab.pdfgen import canvas

>> >

>> > enc = pdfencrypt.StandardEncryption("secret",

>> > canPrint=False, canCopy=False)

>> > c = canvas.Canvas("hello-enc.pdf", encrypt=enc)

>> > c.drawString(100, 100, "Hello World")

>> > c.showPage()

>> > c.save()

>> >

>> > OTOH, the preview of the Python brochure does exactly that, let all

>> > people see the content, but don't let them copy stuff e.g. without

>> > a user password. See download on http://brochure.getpython.info

>> >

>> > Is there a way to achieve this with reportlab.lib.pdfencrypt?

>> >

>> > BTW, there is some space left for a ReportLab ad in the brochure...

>> > ;-)

>>

>> _______________________________________________

>> reportlab-users mailing list

>> reportlab-users at lists2.reportlab.com

>> http://two.pairlist.net/mailman/listinfo/reportlab-users

>>

>>

>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://two.pairlist.net/pipermail/reportlab-users/attachments/20130325/46336a2e/attachment-0001.htm>


More information about the reportlab-users mailing list