Код: Выделить всё
byte[] templateBytes = loadTemplate();
try (var document = Loader.loadPDF(templateBytes)) {
var contentStream = new PDPageContentStream(document, document.getPage(0), PDPageContentStream.AppendMode.APPEND, false, false);
// places text in document
contentStream.close();
renderAndSave(document);
}
Код: Выделить всё
private void renderAndSave(PDDocument document) throws IOException {
val path = getFilePath();
var renderer = new PDFRenderer(document);
var bufferedImage = renderer.renderImageWithDPI(0, 72, ImageType.RGB);
try (var byteArrayOutputStream = new ByteArrayOutputStream()) {
document.save(byteArrayOutputStream);
ImageIO.write(bufferedImage, "PNG", byteArrayOutputStream);
var bytes = byteArrayOutputStream.toByteArray();
fileService.upload(bytes, path);
}
}
< /code>
Проблема связана с тем, как отображаются градиенты. Вы видите эти шаги? В первичном PDF нет таких резких переходов. />
Нет шагов, и градиенты очень гладкие.
Я не могу решить проблему. I already tried:
[*]Change DPI
[*]Change quality of template PDF file
[*]Set RenderDestination[*]Render to ARGB instead of RGB
Render to JPEG Вместо png < /li>
< /ul>
это не помогает. Проблема не связана с результатом PDF, поскольку результат PDF содержит правильные градиенты. Я пытался отображать PDF с помощью онлайн -сайта, и в результате PNG также были плавные градиенты. Таким образом, проблемы связаны с тем, как Apache Pdfbox рендерирует PDFS.
Как я могу отображать PDF в Java, чтобы получить результат PNG с плавными градиентами?>
Подробнее здесь: https://stackoverflow.com/questions/797 ... che-pdfbox