iText - добавить контент в существующий файл PDF

Для чрезвычайно безопасных систем мы шифруем пароль базы данных в файле конфигурации (который сам защищен системным администратором). При запуске приложения / сервера приложение затем запрашивает системный администратор для ключа дешифрования. Затем пароль базы данных считывается из файла конфигурации, дешифруется и сохраняется в памяти для будущего использования. Все еще не на 100% безопаснее, поскольку он хранится в дешифрованной памяти, но вы должны называть его «достаточно безопасным» в какой-то момент!

45
задан Wouter Lievens 26 July 2010 в 13:18
поделиться

1 ответ

В iText есть несколько способов сделать это. Класс PdfStamper является одним из вариантов. Но самый простой способ - создать новый документ PDF, а затем импортировать отдельные страницы из существующего документа в новый PDF.

// Create output PDF
Document document = new Document(PageSize.A4);
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
document.open();
PdfContentByte cb = writer.getDirectContent();

// Load existing PDF
PdfReader reader = new PdfReader(templateInputStream);
PdfImportedPage page = writer.getImportedPage(reader, 1); 

// Copy first page of existing PDF into output PDF
document.newPage();
cb.addTemplate(page, 0, 0);

// Add your new data / text here
// for example...
document.add(new Paragraph("my timestamp")); 

document.close();

Это позволит считывать PDF из templateInputStream и записывать его в outputStream. Это могут быть файловые потоки или потоки памяти, или то, что подходит для вашего приложения.

71
ответ дан 26 November 2019 в 20:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: