pdf에 동적 이미지를 표시해야하는 유스 케이스가 있습니다. PDF 생성의 FApacheFOP 2.1을 사용하고 있습니다. API 호출에서 이미지 행을 가져오고 그 이미지를 기본 64 형식으로 변환합니다.xslfo 및 FOP를 사용하여 PDF에서 base64 이미지를 볼 수 없음 2.1
이미지로 변환하는 자바 COE 발견하십시오! 나는 PDF에 이미지를 인쇄 할 수 xslfo에서 64 기수 유형의 데이터를 사용하고
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;
을 아래 xslfo를 찾아주세요, 여기에 $ signatureImage에 의해 전송되는 데이터입니다 위의 자바 코드는
템플릿 렌더링의 출력에서 나는 xslfo 파일에 base64 스트림을 가져 왔습니다. 아래 출력물을 찾으십시오 :
<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/jpg가 아닌'image/jpeg'이어야합니까? 또한 b64 문자열 주변의 {}는 나에게 의심스러워 보입니다. –
jpeg로 시도해 보았습니다. {}도 제거되었습니다. 행운은 없지만 이미지를 표시하지 않습니다. 그것은 문제가 base64 변환으로 보이지만 문제가 무엇인지 확실하지 않은 것처럼 보입니다. –
"base64"데이터의 base64 디코드를 할 때 77 + 977 + 977 + 977 + 9ABB ... 0xef로 시작합니다. 0xbf 0xbd 0xef ... 0xff로 시작하는 jpeg 파일이 아닌 것 같습니다. 아마도 0xff 0xe0. 나에게 잘못 보입니다 ... –