Bom dia amigos do Forum!
Preciso setar a alguns PDF’s que eles não poderão ser impressos e nem copiados, acredito que eu deva adicionar uma criptografia.
Estou usando o iText, com ele ja separo, concateno, adiciono marca de agua. Mas não estou conseguindo colocar essas permissões.
E depois, quando o cara estiver com a senha fodona, ele deve permitir a impressão.
Aguém ai já fez algo parecido? Poderia me dar uma ajuda?
O código exemplo que peguei é o seguinte…
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Date;
import com.itextpdf.text.Document;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;
public class GeneratePDF {
private static String USER_PASS = "Hello123";
private static String OWNER_PASS = "Owner123";
public static void main(String[] args) {
try {
OutputStream file = new FileOutputStream(new File("D:\\Test.pdf"));
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, file);
writer.setEncryption(USER_PASS.getBytes(), OWNER_PASS.getBytes(),
PdfWriter.ALLOW_PRINTING, PdfWriter.ENCRYPTION_AES_128);
document.open();
document.add(new Paragraph("Hello World, iText"));
document.add(new Paragraph(new Date().toString()));
document.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Qualquer ajuda é bem vinda!
Sim, estou usando, mas para novos PDF’s.
Preciso pegar um PDF já existente e quando for abrir setar ou remover essas permissões
Alguma dica? Artigo? Tutorial? Codigo?
A
Esse é o codigo que eu fiz, ele até executa, mas quando vou abrir o PDF da um erro dizendo que o PDF não pode ser lido!!!
HELP!!
public class PermicaoPdf {
public static void main(String args) {
String param[] = args.split("#");
String USER_PASS = param[1];
String OWNER_PASS = param[2];
try {
FileOutputStream file = new FileOutputStream(param[0]);
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, file);
writer.setEncryption(USER_PASS.getBytes(), OWNER_PASS.getBytes(),
PdfWriter.AllowPrinting , PdfWriter.ENCRYPTION_AES_128);
document.open();
//document.add(new Paragraph("Hello World, iText"));
//document.add(new Paragraph(new Date().toString()));
document.close();
file.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Verifiquei vários erros no meu código e acredito que agora cheguei perto do que preciso…
Ele grava o arquivo e talz, mas quando vou abrir ele não consegue… =/
PdfReader splitPdf = new PdfReader(param[0]);
File saida = new File(param[3]);
String hardPassword = param[1];
byte[] hardPasswordByte = hardPassword.getBytes();
String hardUser = param[2];
byte[] hardUserByte = hardUser.getBytes();
PdfReader reader = new PdfReader(splitPdf);
FileOutputStream out = new FileOutputStream(saida);
PdfStamper stamp = new PdfStamper(reader, out);
//first argument is the user password. If set to something it asks for password when opening file, not wanted.
stamp.setEncryption(hardUserByte, hardPasswordByte, PdfWriter.AllowPrinting, true);
Alguém me AJUDA!!!
setEncryption(null, “permission_password”.getBytes(),
~(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING ), PdfWriter.ENCRYPTION_AES_256);
Esse null no inicio serve para ele não pedir password para abrir o arquivo!
Pessoal ainda estou com problemas nesse caso.
Até consigo proteger o arquivo com senha. Mas preciso que seja possivel visualizar(sem precisar de senha) mas que bloqueie a impressão e cópia.
Estou usando o Itext.
Ja tentei de 3 formas:
1ª
PdfEncryptor.encrypt(leitor, new FileOutputStream(saida), false, “”,“teste”, PdfWriter.AllowCopy | PdfWriter.AllowPrinting);
2ª
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(saida));
stamper.setEncryption("".getBytes(), “”.getBytes(),
PdfWriter.AllowPrinting | PdfWriter.AllowCopy,
PdfWriter.STRENGTH40BITS);
3ª
PdfEncryptor.encrypt(new PdfReader(arquivo),
New FileOutputStream(saida), “”.getBytes(), “”.getBytes(),
PdfWriter.AllowDegradedPrinting | PdfWriter.AllowCopy | PdfWriter.AllowPrinting,
PdfWriter.STRENGTH128BITS);
Alguem sabe me dizer qual caminho devo seguir?
Att