Пожалуйста, рассмотрите возможность использования специфичного для PDF API для создания / обновления PDF-файла. Я очень рекомендую iText . PDF-файл - это не просто поток байтов. Многое задействовано, и вы должны учитывать шрифт, размер страницы, начальные координаты X и Y, направление текста, добавление новых страниц, структуру таблиц или свободный стиль и список можно продолжить.
На сайте есть много примеров кода, которые помогут вам начать работу. Вот упрощенный фрагмент добавления текста в PDF-файл с помощью iText API:
try {
...
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(pdfFile));
...
PdfReader reader = new PdfReader(bis);
/* outs could be any output stream */
stamper = new PdfStamper(reader,outs);
... /* removed the code to get current page */
PdfContentByte over = stamper.getOverContent(currentPage);
over.beginText();
over.setFontAndSize(myFont, myFontSize);
over.setTextMatrix(xPoint, yPoint);
over.showText("Add this text");
over.endText();
... /* removed code to adjust x and y coordinate and add page if needed */
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
stamper.close();
} catch (Exception ex) {/* handle exception */}
try {
outs.flush();
outs.close();
} catch (Exception ignored) {/* handle exception */}
}