У меня есть прецедент, где мне нужно показать динамическое изображение в формате pdf. Я использую FApacheFOP 2.1 поколения PDF. Я получаю строку изображения в точке от вызова API, тогда я конвертирую это изображение в формат базы 64.Не удалось увидеть изображение base64 в формате PDF с использованием xslfo и FOP 2.1
пожалуйста найти Java CoE, чтобы преобразовать изображение:
String jpgFileName = ConfigManager.getImageFilePath() + "/jpgImage-"+System.currentTimeMillis()+".jpg";
Blob imageDataBlob = (Blob) faesRow.get("imageData");
FileUtil.writeToFile(imageDataBlob, jpgFileName);
String base64Result = Base64.getEncoder().encodeToString(FileUtil.readFromFile(jpgFileName).getBytes("utf-8"));
result = base64Result;
Я использую данные типа base64 в xslfo для печати изображения на PDF, пожалуйста, найти xslfo ниже, здесь $ signatureImage это данные, посланные код Java выше:
<xsl:param name="Name">data:image/jpg;base64,{$!signatureImage}</xsl:param>
<fo:block-container absolute-position="absolute" left="3.50in" top="9.25in" width="4.0in" height="2.0in">
<fo:block text-align="left">
<fo:external-graphic content-width="scale-to-fit"
content-height="100%"
width="100%"
scaling="uniform"
src="url({$Name})"/>
</fo:block>
</fo:block-container>
в выводе шаблона рендеринге я получаю м base64 поток там в файле xslfo. Ниже приведены результаты:
<xsl:param name="Name">data:image/jpg;base64,{77+977+977+977+9ABBK... }</xsl:param>
<fo:block-container absolute-position="absolute" left="3.50in" top="9.25in" width="4.0in" height="2.0in">
<fo:block text-align="left">
<fo:external-graphic content-width="scale-to-fit"
content-height="100%"
width="100%"
scaling="uniform"
src="url({$Name})"/>
</fo:block>
</fo:block-container>
Теперь проблема заключается в том, что изображение не получает оценку при выходе PDF-файла. Не могли бы вы помочь мне найти способ печати изображения здесь.
Дополнительная информация: 1. У меня нет ошибок при создании PDF. 2. PDF способен печатать статические изображения и штрих-код.
не должен быть типом содержимого 'image/jpeg' вместо изображения/jpg? Кроме того, {} вокруг строки b64 выглядит подозрительно для меня. –
Я попытался с jpeg и удалив {} тоже .. Но не повезло, он не показывает изображение. Это похоже на проблему с преобразованием base64, но не уверен, в чем проблема. –
, когда я делаю base64-декодирование ваших данных «base64» 77 + 977 + 977 + 977 + 9ABB ... он начинается с 0xef 0xbf 0xbd 0xef ... который, кажется, не является файлом jpeg, который начинается с 0xff 0xd8 и вероятно, тогда 0xff 0xe0. выглядит неправильно для меня ... –