Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / web / ASP.NET

PDF Security Remover

4.84/5 (37 votes)
4 Dec 2008CPOL1 min read 137.2K   5.4K  
Remove security from PDF files.

Introduction

This tool allows you to remove the "security" from a PDF File. It has not been widely tested, but has worked on any PDF file that was marked Secure that I was able to open without a password.

Why would you want to do this? Many secure PDF files are set so that you can not copy text from them or print them. This can be really frustrating at times, especially when you are studying the material and you want to put together a study sheet, or something to that effect.

Background

A while back, I purchased an exam study guide, which came with a companion CD containing the book in PDF format. Unfortunately, the file was marked as secure, so when I tried to copy out the "Suggested Practices" section from each chapter, I was not able to, nor could I print any of the pieces. This led me to develop this very small application.

Using the code

The tool is very simple. I use the PDFSharp library to read in the original PDF. I then copy each page to a new PDF file and save it.

VB
Private Sub Form1_Load(ByVal sender As System.Object, _
            ByVal e As System.EventArgs) Handles MyBase.Load
    'Show open file dialog box,
    'this is where you choose what file to load
    Dim ofd As New OpenFileDialog()
    'if you say OK, then continue
    If ofd.ShowDialog() <> Windows.Forms.DialogResult.OK Then
        Exit Sub
    End If

    'import document using PDFSharp
    Dim maindoc As PdfDocument = PdfReader.Open(ofd.OpenFile(), _
                                 PdfDocumentOpenMode.Import)

    'Create the Output Document as a new PDF Document
    Dim OutputDoc As PdfDocument = New PdfDocument()

    'Copy over pages from original document
    For Each page As PdfPage In maindoc.Pages
        OutputDoc.AddPage(page)
    Next

    'Show the Save File Dialog box
    Dim sfd As New SaveFileDialog()
    'if user clicks ok then continue, else dispose objects
    If sfd.ShowDialog() <> Windows.Forms.DialogResult.OK Then
        maindoc.Dispose()
        OutputDoc.Dispose()
        Exit Sub
    End If

    'save new document
    OutputDoc.Save(sfd.OpenFile(), True)
    'dispose of objects
    maindoc.Dispose()
    OutputDoc.Dispose()
    'close the form
    Me.Close()
End Sub

Points of interest

I thought it was funny how easy it was to do this. I expected something a little more complicated, though if it had been, I probably would have just given up on it.

History

  • Version 1.0 - Initial release.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)