【问题标题】:Creating pdf file from byte stream on Android在 Android 上从字节流创建 pdf 文件
【发布时间】:2017-09-23 17:27:13
【问题描述】:

如何在 Android 上正确保存来自 http 响应的 pdf 文件?通过 rest API 接收字节流。我试过这个:

try
{
File outputFile = new File("/storage/emulated/0/Android/data/package/files/", "cot.pdf");
FileOutpuStream fos = new FileOutputStream(outputFile);
byte [] bytes = data.getBytes();//byte stream response
fos.write(bytes);
fos.flush();
fos.close();
}
catch(Exception e)
{
e.printStackTrace();
}

文件和数据都写入了,但是打开pdf的时候只有空白页,怎么回事?

【问题讨论】:

    标签: java android pdf bytestream


    【解决方案1】:
      fun download_pdf(data : ByteArray){
         val fileOutputStream =     FileOutputStream("/storage/emulated/0/dndinfoways.pdf")
        val inputStream: InputStream = ByteArrayInputStream(data)
        var data: Int
        while (inputStream.read().also { data = it } >= 0) {
            fileOutputStream.write(data)
        }
        inputStream.close()
    }
    

    【讨论】:

      【解决方案2】:

      试试这个用例:

      class SaveInputStreamAsPdfFileUseCase {
      
          suspend operator fun invoke(inputStream: InputStream, applicationContext: Context): File? {
              var outputFile: File? = null
              withContext(Dispatchers.IO) {
                  try {
                      val directory = ContextCompat.getExternalFilesDirs(applicationContext, "documents").first()
                      val outputDir = File(directory, "outputPath")
                      outputFile = File(outputDir, UUID.randomUUID().toString() + ".pdf")
                       if (!outputDir.exists()) {
                           outputDir.mkdirs()
                      }
                      val outputStream = FileOutputStream(outputFile, false)
                      inputStream.use { fileOut -> fileOut.copyTo(outputStream) }
                      outputStream.close()
                  } catch (e: Exception) {
                      // Something went wrong
                  }
              }
              return outputFile
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-06-07
        • 2017-07-11
        • 2011-05-25
        • 2015-01-29
        • 1970-01-01
        • 2011-04-01
        • 1970-01-01
        相关资源
        最近更新 更多