如何在颤动中保存pdf文件?
How to save pdf file in flutter?
我有一个 pdf 文件。我想将该文件写入 phone 内存?下面是代码。
首先我扫描然后我将图像转换为 pdf,现在我想将该 pdf 保存到 phone 内存中。请帮助我。
void onDocumentScanner(BuildContext context) async {
try {
File scannedDocumentFile;
var doc = await DocumentScannerFlutter.launchForPdf(context);
if (doc != null) {
refreshDownloadedFiles();
scannedDocumentFile = doc;
String fileName = basename(scannedDocumentFile.path);
final directory = (await getExternalStorageDirectory())!.path;
File saveFilePath = File('$directory/$fileName');
saveFilePath.openWrite(); //Here I want to save to the file
print("Path = $fileName");
Get.toNamed(AppRoutes.viewDownloadedFile,
arguments: [scannedDocumentFile.path, fileName, folderId])!
.whenComplete(() {
refreshFetchedData();
});
}
} catch (e) {
print(e);
}
}
我以前没见过 .openWrite()
方法,但 documentation 说它有 2 个命名参数 FileMode 和 encoding - 尝试指定它们。
如果不行,我只能分享我的解决方案,用 .writeAsBytes
方法。
您可以先捆绑数据,然后再保存,而不是 saveFilePath.openWrite()
。
final byteData = await rootBundle.load(fileName);
await saveFilePath.writeAsBytes(byteData.buffer
.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));
我有一个 pdf 文件。我想将该文件写入 phone 内存?下面是代码。 首先我扫描然后我将图像转换为 pdf,现在我想将该 pdf 保存到 phone 内存中。请帮助我。
void onDocumentScanner(BuildContext context) async {
try {
File scannedDocumentFile;
var doc = await DocumentScannerFlutter.launchForPdf(context);
if (doc != null) {
refreshDownloadedFiles();
scannedDocumentFile = doc;
String fileName = basename(scannedDocumentFile.path);
final directory = (await getExternalStorageDirectory())!.path;
File saveFilePath = File('$directory/$fileName');
saveFilePath.openWrite(); //Here I want to save to the file
print("Path = $fileName");
Get.toNamed(AppRoutes.viewDownloadedFile,
arguments: [scannedDocumentFile.path, fileName, folderId])!
.whenComplete(() {
refreshFetchedData();
});
}
} catch (e) {
print(e);
}
}
我以前没见过 .openWrite()
方法,但 documentation 说它有 2 个命名参数 FileMode 和 encoding - 尝试指定它们。
如果不行,我只能分享我的解决方案,用 .writeAsBytes
方法。
您可以先捆绑数据,然后再保存,而不是 saveFilePath.openWrite()
。
final byteData = await rootBundle.load(fileName);
await saveFilePath.writeAsBytes(byteData.buffer
.asUint8List(byteData.offsetInBytes, byteData.lengthInBytes));