Java, удалите пароль PDF и верните массив байтов

#java #binary #pdfbox

Вопрос:

Я пытаюсь удалить пароль из pdf — документа и возвращаю байты.

 PDDocument pddocument = PDDocument.load(new ByteArrayInputStream(Binary_PDF.getContentBytes()), sPDF_Password);
test1 = Arrays.toString(Binary_PDF.getContentBytes());
pddocument.setAllSecurityToBeRemoved(true);
PDStream pdStream = new PDStream(pddocument);
test2 = Arrays.toString(pdStream.toByteArray());
Binary_PDF = new emds.util.Base64Binary(pdStream.toByteArray());
 

тест1 заполнен (массив содержит значения)

тест2 пуст (массив не содержит значений)

Как я могу исправить эту проблему? Это просто java PDFBox.

Комментарии:

1. new PDStream(pddocument) «Создает новый пустой объект PDStream» в соответствии с документами API

2. Но я создаю новый поток PDF? Строка 4?

3. Я не знаю API — я просто [передаю то, что говорят документы] ( pdfbox.apache.org/docs/2.0.13/javadocs/org/apache/pdfbox/… ). Я предполагаю, что вы должны обработать его, прежде чем он будет заполнен

Ответ №1:

Это работает:

 PDDocument pddocument = PDDocument.load(new ByteArrayInputStream(Binary_PDF.getContentBytes()), sPDF_Password);
pddocument.setAllSecurityToBeRemoved(true);
ByteArrayOutputStream out = new ByteArrayOutputStream();
pddocument.save(out);
pddocument.close();
Binary_PDF = new emds.util.Base64Binary(out.toByteArray());