如何将 ByteBuffer 转换为 pdf
How to convert ByteBuffer to pdf
在我的应用程序中,pdf 报告仅在打印预览中打开,允许用户直接打印 pdf 文档。现在我想自动执行此操作以验证 pdf 内容。
我通过 base64 中的 api 获得了 pdf 内容[拆分后只获取数据],我尝试在解码后转换为字节数组,但它只打印垃圾字符。[字节数组到细绳]
现在我已经将这些数据转换成 ByteBuffer 并希望它以 pdf 格式写入。
ByteBuffer decodedBytes = new BASE64Decoder().decodeBufferToByteBuffer(
new String(base64split2[1].substring(0, base64split2[1].length() - 1))
);
谁能告诉我如何将 ByteBuffer 的 decodedBytes 转换为 pdf。
谢谢
byte[] decodedBytes = new BASE64Decoder().decodeBuffer(str);
InputStream targetStream = new ByteArrayInputStream(decodedBytes);
PDDocument document = PDDocument.load(targetStream);
document.save("C:/test.pdf");
FileUtils.writeByteArrayToFile(new File("C:/test.pdf"), decodedBytes);
使用上面的代码转换为pdf。
从 API 获取 pdf 的 blob 数据:
Future<dynamic> getBlobdata(int pdfId) async {
try {
var response = await Dio().get(
"https://www.google.com/pdf/$pdfId",
options: Options(
responseType: ResponseType.bytes,
contentType: 'application/octet-stream',
),
);
var data = {"data": response.data.buffer};
return data;
} on DioError catch (error) {
var data = error.response.data;
return data;
}
}
定义保存文件的文件名和目录:
String fileName = "pdf$pdfId";
final dir = await getExternalStorageDirectory();
var pdfBlob = await getBlobdata(1); // have to be in a asyn func to use await
保存 PDF :
final file = File("${dir.path}/$fileName.pdf");
await file.writeAsBytes(pdfBlob.asUint8List());
在应用程序中查看 PDF:
await OpenFile.open("${dir.path}/$fileName.pdf");
在我的应用程序中,pdf 报告仅在打印预览中打开,允许用户直接打印 pdf 文档。现在我想自动执行此操作以验证 pdf 内容。
我通过 base64 中的 api 获得了 pdf 内容[拆分后只获取数据],我尝试在解码后转换为字节数组,但它只打印垃圾字符。[字节数组到细绳] 现在我已经将这些数据转换成 ByteBuffer 并希望它以 pdf 格式写入。
ByteBuffer decodedBytes = new BASE64Decoder().decodeBufferToByteBuffer(
new String(base64split2[1].substring(0, base64split2[1].length() - 1))
);
谁能告诉我如何将 ByteBuffer 的 decodedBytes 转换为 pdf。
谢谢
byte[] decodedBytes = new BASE64Decoder().decodeBuffer(str);
InputStream targetStream = new ByteArrayInputStream(decodedBytes);
PDDocument document = PDDocument.load(targetStream);
document.save("C:/test.pdf");
FileUtils.writeByteArrayToFile(new File("C:/test.pdf"), decodedBytes);
使用上面的代码转换为pdf。
从 API 获取 pdf 的 blob 数据:
Future<dynamic> getBlobdata(int pdfId) async {
try {
var response = await Dio().get(
"https://www.google.com/pdf/$pdfId",
options: Options(
responseType: ResponseType.bytes,
contentType: 'application/octet-stream',
),
);
var data = {"data": response.data.buffer};
return data;
} on DioError catch (error) {
var data = error.response.data;
return data;
}
}
定义保存文件的文件名和目录:
String fileName = "pdf$pdfId";
final dir = await getExternalStorageDirectory();
var pdfBlob = await getBlobdata(1); // have to be in a asyn func to use await
保存 PDF :
final file = File("${dir.path}/$fileName.pdf");
await file.writeAsBytes(pdfBlob.asUint8List());
在应用程序中查看 PDF:
await OpenFile.open("${dir.path}/$fileName.pdf");