如何将 Blob 对象转换为 Java 中的 PDF 文件?

新手上路,请多包涵

我有以下情况进入一个Java应用程序。

从数据库中检索此 Blob 对象,该对象代表数据库中的 PDF 文件:

 Blob blobPdf = cedolinoPdf.getAllegatoBlob();

现在我必须将它转换成 PDF 文件。我该如何完成这项任务?

发件人

原文由 AndreaNobili 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

您可以使用 ResultSet 中的 getBinaryStream(),然后您可以从 getBinaryStream() 返回的 InputStream 创建一个文件。

您的代码可能看起来像这样

 Connection connection = null;
Statement statement = null;
ResultSet rs = null;

try {

        Class.forName("net.sourceforge.jtds.jdbc.Driver").newInstance();
        connection = DriverManager.getConnection(connectionURL, "sa", "sa");
        statement = connection.createStatement();
        rs = statement.executeQuery("SELECT fileName,blobFile FROM tblBlobFiles");


        if (rs.next()) {

String filename = rs.getString(1);
           Blob blob = rs.getBlob(2);
          InputStream is = blob.getBinaryStream();
              FileOutputStream fos = new FileOutputStream("C:\\DownloadedFiles"+ "\\" + filename);

int b = 0;
while ((b = is.read()) != -1)
{
    fos.write(b);
}
        }
    } catch (IOException e)
    {
    e.getMessage (); e.printStackTrace();
System.out.println(e);
    }
    catch (SQLException e)
    {
    e.getMessage (); e.printStackTrace();
System.out.println(e);
    }

如果您需要所有 blob,请对结果集进行迭代

原文由 Tanmoy Bhattacharjee 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果 Blob 是 PDF 的二进制表示,您需要做的就是获取字节。如果你想将 PDF 写入文件,你可以这样做……

 Blob blobPdf = ...;
File outputFile = new File("/tmp/blah/whatever.pdf");
FileOutputStream fout = new FileOutputStream(outputFile);
IOUtils.copy(blobPdf.getBinaryStream(), fout);

这应该将您的 PDF 写入名为“/tmp/blah/whatever.pdf”的文件

原文由 BretC 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏