Вы можете просто использовать метод wrap
класса java.util.Base64.Encoder
, чтобы получить OutputStream
, который выполняет кодирование Base64 для всего записанного в него:
FileOutputStream fos = new FileOutputStream("pdf-base64.txt");
OutputStream base64os = Base64.getEncoder().wrap(fos);
HtmlConverter.convertToPdf(HTML, base64os);
Обратите внимание, что в документации сказано закрыть выходной поток Base64:
Рекомендуется незамедлительно закрыть возвращенный выходной поток после использования, во время которого он будет sh передавать все возможные оставшиеся байты в базовый выходной поток. Закрытие возвращенного выходного потока закроет основной выходной поток.
convertToPdf
автоматически закрывает выходной поток, но если вы создаете PDF другим способом, обязательно вызовите base64os.close()
.
Если по какой-то причине вы хотите сначала создать PDF, а затем выполнить кодировку Base64, вы можете использовать одну из многих реализаций кодирования Base64. Например, используя java.util.Base64.Encoder
:
// Create PDF
ByteArrayOutputStream baos = new ByteArrayOutputStream();
HtmlConverter.convertToPdf(HTML, baos);
// Generate Base64 encoded version of PDF
byte[] base64encoded = Base64.getEncoder().encode(baos.toByteArray());
// Write Base64 data to file
FileOutputStream fos = new FileOutputStream("pdf-base64.txt");
fos.write(base64encoded);
fos.close();