Usually, when you buy a PDF book, it's encrypted and protected by a password. No problem, I agree with authors and publishers that need to protect their work, even if this technique is a very poor protection.
Unfortunately usually some portable readers, like my PRS-505, don't have encryption/password support, so you can't upload those PDFs on them.
So you need to unencrypt the PDF for reading it on the device, a perfectly legal operation if you legally bought the book.
The easiest way to unencrypt a PDF should be to use the pdftk command line tool:
pdftk abook.pdf input_pw your_password_here output abook_unencrypted.pdf
Unfortunately it always emits this error:
Error: Failed to open PDF file:
abook.pdf
OWNER PASSWORD REQUIRED, but not given (or incorrect)
Of course the password was correct and I tried with different combinations of input/owner/user password parameters. I think it's a bug of pdftk (version 1.41).
So I wrote a small Java program for unecrypting my files:
For executing it, download this file, and type:
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.pdf.PdfCopy;
import com.lowagie.text.pdf.PdfImportedPage;
import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.SimpleBookmark;
import java.io.FileOutputStream;
import java.io.IOException;
public class Unencrypt {
public static void main( String[] args )
throws IOException, DocumentException {
String inFile = args[0];
String outFile = args[1];
String password = args[2];
PdfReader pdfReader = new PdfReader(inFile, password.getBytes());
Document document = new Document();
PdfCopy copy = new PdfCopy(document, new FileOutputStream(outFile));
document.open();
for (int i = 1; i <= pdfReader.getNumberOfPages(); i++) {
PdfImportedPage importedPage = copy.getImportedPage(pdfReader, i);
copy.addPage(importedPage);
}
copy.setOutlines(SimpleBookmark.getBookmark(pdfReader));
document.close();
pdfReader.close();
}
}
java -cp bpdf.jar com.benfante.bpdf.Unencrypt \
abook.pdf abook_unencrypted.pdf \
your_password_here
*WARNING*: I'm not responsible of the use you can do of this code. It's not intended as a tool for infringing copyrights, just for reading PDFs you legally owns on devices that don't support encrypting.
No comments:
Post a Comment