0

Web サービスの応答として Base 64 でエンコードされたグラフィック イメージを取得しており、それを PDF ファイルに変換する必要があります。次のコード スニペットを使用して、base 64 でエンコードされたグラフィック イメージを pdf ドキュメントに変換しました。

// First decode the Base 64 encoded graphic image
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(s);

// Create the pdf file
File file = new File("output.png");
FileOutputStream fop = new FileOutputStream(file);

fop.write(decodedBytes);
fop.flush();
fop.close();

しかし、pdf ファイルを開くと、以下のエラーが発生します。

サポートされているファイル タイプではないか、ファイルが破損しているため、Adobe Reader は「output.pdf」を開くことができませんでした。

以下のようにPDFボックスを試しました。

BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(s);

ImageToPDF imageToPdf = new ImageToPDF();
imageToPdf.createPDFFromImage("output.pdf", decodedBytes.toString());

これも私たちを助けませんでした。Base 64 でエンコードされたグラフィック イメージから PDF ファイルを作成する方法を教えてください。

4

1 に答える 1

0

私はあなたがここでステップを逃していると思います。フォローしてみてください

  • まず、Base64 データから次のようにイメージを作成します (ここから取得) 。

文字列 base64String = "BORw0KGgoAAAANSUhEUgAAAUAAAAHgCAYAAADUjLREAAAgAElEQVR4AexdB4BU1dX+ZmZ7ZWGX3pHeu6goitgQDCZGjdHYu4nGqL81mmaJvdd";

    BASE64Decoder decoder = new BASE64Decoder();
    byte[] decodedBytes = decoder.decodeBuffer(base64String);
    log.debug("Decoded upload data : " + decodedBytes.length);



     String uploadFile = "/tmp/test.png";
     log.debug("File save path : " + uploadFile);

     BufferedImage image = ImageIO.read(new ByteArrayInputStream(decodedBytes));
     if (image == null) {
          log.error("Buffered Image is null");
      }
     File f = new File(uploadFile);

     // write the image
      ImageIO.write(image, "png", f);

この例ではsun.misc.BASE64Decoderを使用していますが、これを使用せずに他のオープン ソース デコーダを使用することをお勧めします (たとえば、apache commend-codecライブラリは優れており、広く使用されています)。

  • 画像ファイルを取得したら、 を使用ImageToPDFして同じものを PDF ファイルに変換します。
于 2013-05-30T07:13:29.000 に答える