私はpdfの動的イメージを表示する必要があります。私はPDF生成のFApacheFOP 2.1を使用しています。 API呼び出しからイメージ行を取得していますが、イメージを64形式に変換しています。xslfoとFOPを使ってPDFでbase64イメージを見ることができません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;
私はPDFに画像を印刷するためにXSLFOにBASE64型のデータを使用しています、以下の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>
テンプレートレンダリングの出力では、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ではなくcontent typeが 'image/jpeg'であるべきですか?また、b64文字列のまわりの{}は私には疑わしいと思われます。 –
私はjpegで試してみましたが、{}も取り除いています。運がないと画像が表示されません。それは問題がbase64変換であるように見えますが、何が問題であるかは不明です。 –
"base64"データのbase64デコードを行うと、77 + 977 + 977 + 977 + 9ABB ... 0xef 0xbf 0xbd 0xefで始まります。これは0xff 0xd8で始まるjpegファイルではないようですおそらく0xff 0xe0です。私に間違って見える... –