/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* $Id$ */ package org.apache.fop.pdf; /** * This class holds the parameters for PDF encryption. */ public class PDFEncryptionParams { private String userPassword = ""; //May not be null private String ownerPassword = ""; //May not be null private boolean allowPrint = true; private boolean allowCopyContent = true; private boolean allowEditContent = true; private boolean allowEditAnnotations = true; private boolean allowFillInForms = true; private boolean allowAccessContent = true; private boolean allowAssembleDocument = true; private boolean allowPrintHq = true; private boolean encryptMetadata = true; private int encryptionLengthInBits = 128; /** * Creates a new instance. * @param userPassword the user password * @param ownerPassword the owner password * @param allowPrint true if printing is allowed * @param allowCopyContent true if copying content is allowed * @param allowEditContent true if editing content is allowed * @param allowEditAnnotations true if editing annotations is allowed */ public PDFEncryptionParams(String userPassword, String ownerPassword, boolean allowPrint, boolean allowCopyContent, boolean allowEditContent, boolean allowEditAnnotations, boolean encryptMetadata) { setUserPassword(userPassword); setOwnerPassword(ownerPassword); setAllowPrint(allowPrint); setAllowCopyContent(allowCopyContent); setAllowEditContent(allowEditContent); setAllowEditAnnotations(allowEditAnnotations); this.encryptMetadata = encryptMetadata; } /** * Default constructor initializing to default values. */ public PDFEncryptionParams() { //nop } /** * Creates a copy of the given encryption parameters. * * @param source source encryption parameters */ public PDFEncryptionParams(PDFEncryptionParams source) { setUserPassword(source.getUserPassword()); setOwnerPassword(source.getOwnerPassword()); setAllowPrint(source.isAllowPrint()); setAllowCopyContent(source.isAllowCopyContent()); setAllowEditContent(source.isAllowEditContent()); setAllowEditAnnotations(source.isAllowEditAnnotations()); setAllowAssembleDocument(source.isAllowAssembleDocument()); setAllowAccessContent(source.isAllowAccessContent()); setAllowFillInForms(source.isAllowFillInForms()); setAllowPrintHq(source.isAllowPrintHq()); setEncryptionLengthInBits(source.getEncryptionLengthInBits()); encryptMetadata = source.encryptMetadata(); } /** * Indicates whether copying content is allowed. * @return true if copying is allowed */ public boolean isAllowCopyContent() { return allowCopyContent; } /** * Indicates whether editing annotations is allowed. * @return true is editing annotations is allowed */ public boolean isAllowEditAnnotations() { return allowEditAnnotations; } /** * Indicates whether editing content is allowed. * @return true if editing content is allowed */ public boolean isAllowEditContent() { return allowEditContent; } /** * Indicates whether printing is allowed. * @return true if printing is allowed */ public boolean isAllowPrint() { return allowPrint; } /** * Indicates whether revision 3 filling in forms is allowed. * @return true if revision 3 filling in forms is allowed */ public boolean isAllowFillInForms() { return allowFillInForms; } /** * Indicates whether revision 3 extracting text and graphics is allowed. * @return true if revision 3 extracting text and graphics is allowed */ public boolean isAllowAccessContent() { return allowAccessContent; } /** * Indicates whether revision 3 assembling document is allowed. * @return true if revision 3 assembling document is allowed */ public boolean isAllowAssembleDocument() { return allowAssembleDocument; } /** * Indicates whether revision 3 printing to high quality is allowed. * @return true if revision 3 printing to high quality is allowed */ public boolean isAllowPrintHq() { return allowPrintHq; } /** * Indicates whether Metadata should be encrypted. * @return true or false */ public boolean encryptMetadata() { return encryptMetadata; } /** * Returns the owner password. * @return the owner password, an empty string if no password applies */ public String getOwnerPassword() { return ownerPassword; } /** * Returns the user password. * @return the user password, an empty string if no password applies */ public String getUserPassword() { return userPassword; } /** * Sets the permission for copying content. * @param allowCopyContent true if copying content is allowed */ public void setAllowCopyContent(boolean allowCopyContent) { this.allowCopyContent = allowCopyContent; } /** * Sets the permission for editing annotations. * @param allowEditAnnotations true if editing annotations is allowed */ public void setAllowEditAnnotations(boolean allowEditAnnotations) { this.allowEditAnnotations = allowEditAnnotations; } /** * Sets the permission for editing content. * @param allowEditContent true if editing annotations is allowed */ public void setAllowEditContent(boolean allowEditContent) { this.allowEditContent = allowEditContent; } /** * Sets the permission for printing. * @param allowPrint true if printing is allowed */ public void setAllowPrint(boolean allowPrint) { this.allowPrint = allowPrint; } /** * Sets whether revision 3 filling in forms is allowed. * @param allowFillInForms true if revision 3 filling in forms is allowed. */ public void setAllowFillInForms(boolean allowFillInForms) { this.allowFillInForms = allowFillInForms; } /** * Sets whether revision 3 extracting text and graphics is allowed. * @param allowAccessContent true if revision 3 extracting text and graphics is allowed */ public void setAllowAccessContent(boolean allowAccessContent) { this.allowAccessContent = allowAccessContent; } /** * Sets whether revision 3 assembling document is allowed. * @param allowAssembleDocument true if revision 3 assembling document is allowed */ public void setAllowAssembleDocument(boolean allowAssembleDocument) { this.allowAssembleDocument = allowAssembleDocument; } /** * Sets whether revision 3 printing to high quality is allowed. * @param allowPrintHq true if revision 3 printing to high quality is allowed */ public void setAllowPrintHq(boolean allowPrintHq) { this.allowPrintHq = allowPrintHq; } /** * Whether the Metadata should be encrypted or not; default is true; * @param encryptMetadata true or false */ public void setEncryptMetadata(boolean encryptMetadata) { this.encryptMetadata = encryptMetadata; } /** * Sets the owner password. * @param ownerPassword The owner password to set, null or an empty String * if no password is applicable */ public void setOwnerPassword(String ownerPassword) { if (ownerPassword == null) { this.ownerPassword = ""; } else { this.ownerPassword = ownerPassword; } } /** * Sets the user password. * @param userPassword The user password to set, null or an empty String * if no password is applicable */ public void setUserPassword(String userPassword) { if (userPassword == null) { this.userPassword = ""; } else { this.userPassword = userPassword; } } /** * Returns the encryption length. * @return the encryption length */ public int getEncryptionLengthInBits() { return encryptionLengthInBits; } /** * Sets the encryption length. * * @param encryptionLength the encryption length */ public void setEncryptionLengthInBits(int encryptionLength) { this.encryptionLengthInBits = encryptionLength; } public String toString() { return "userPassword = " + userPassword + "\n" + "ownerPassword = " + ownerPassword + "\n" + "allowPrint = " + allowPrint + "\n" + "allowCopyContent = " + allowCopyContent + "\n" + "allowEditContent = " + allowEditContent + "\n" + "allowEditAnnotations = " + allowEditAnnotations + "\n" + "allowFillInForms = " + allowFillInForms + "\n" + "allowAccessContent = " + allowAccessContent + "\n" + "allowAssembleDocument = " + allowAssembleDocument + "\n" + "allowPrintHq = " + allowPrintHq + "\n" + "encryptMetadata = " + encryptMetadata; } }