PDF Security Remover
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.
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.