Ваш код возвращает экземпляр PDDocument
, который Spring Framework в конечном итоге пытается сериализовать как XML (или, вероятно, JSON? Я не настолько осведомлен в отношении Джексона или Spring ...), используя какой-то обобщенный c стратегия. Но PDDocument
не предназначен для такой обобщенной c сериализации, поэтому это не удается.
Более того, даже если это сработало, принимающая сторона, скорее всего, не смогла бы успешно построить PDDocument
из этого снова, потому что браузеры обычно не имеют PDFBox в своем пути к классам ...
Таким образом, вместо этого вы должны вернуть PDF, представленный этим экземпляром PDDocument
, в некоторой обобщенной форме c, например, в виде байтового массива.
Такой байтовый массив PDF можно создать, сохранив экземпляр PDDocument
в ByteArrayOutputStream
и получив копию его байтового массива:
byte[] bytes = null;
PDDocument doc = new PDDocument();
try {
PDPage page = new PDPage();
[...]
content.close();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
doc.save(baos);
bytes = baos.toByteArray();
} finally {
doc.close();
}
return bytes;