Max*_*x33 6 pdf http token flutter
我正在一个项目中工作,我必须出示用户完成课程的证书,有一个 API 的 URL,它使用令牌中的 get 方法来访问 pdf 文件,问题是我不知道如何使用 flutter 显示或将该响应转换为 pdf,\n我尝试使用 url_launcher 依赖项,因为在浏览器中正常显示 pdf,但问题是我需要将令牌传递给该 url。\n第二个我尝试的方法是获取 api 的响应并将其保存在临时文件中并使用 flutter_pdfview 依赖项,但它显示错误。\n这就是 api 的响应的样子:
\n%PDF-1.4\n1 0 obj\n<<\n/Title (\xc3\xbe\xc3\xbf)\n/Creator (\xc3\xbe\xc3\xbf)\n/Producer (\xc3\xbe\xc3\xbfQt 5.5.1)\n/CreationDate (D:20211120205047)\n>>\nendobj\n2 0 obj\n<<\n/Type /Catalog\n/Pages 3 0 R\n>>\nendobj\n4 0 obj\n<<\n/Type /ExtGState\n/SA true\n/SM 0.02\n/ca 1.0\n/CA 1.0\n/AIS false\nRun Code Online (Sandbox Code Playgroud)\n这是我尝试过的:
\n Future LoadPDF(APIurl)async {\n Map<String,String> Headers={\n 'Content-type': 'application/json; charset=UTF-8',\n 'Accept': 'application/json',\n 'Authorization': 'Bearer $userToken'\n };\n final response = await http.get(Uri.parse(APIurl),headers: Headers);\n final bytes = response.bodyBytes;\n // print(response.bodyBytes);\n var dir = await getTemporaryDirectory();\n File file = File(dir.path + "/data.pdf"); \n await file.writeAsBytes(bytes, flush: true);\n setState(() {\n loadDocument(file);\n });\n // return file;\n \n }\nRun Code Online (Sandbox Code Playgroud)\n
小智 0
您可以使用flutter_pdfview包来显示 pdf:
loadDocument(file) {
PDFView(
filePath: file.path,
enableSwipe: true,
swipeHorizontal: true,
autoSpacing: false,
pageFling: false,
onRender: (_pages) {
setState(() {
pages = _pages;
isReady = true;
});
},
onError: (error) {
print(error.toString());
},
onPageError: (page, error) {
print('$page: ${error.toString()}');
},
onViewCreated: (PDFViewController pdfViewController) {
_controller.complete(pdfViewController);
},
onPageChanged: (int page, int total) {
print('page change: $page/$total');
},
),
}
Run Code Online (Sandbox Code Playgroud)