Come visualizzare un pdf recuperato da una risposta API in flutter?

0

Domanda

Sto lavorando ad un progetto in cui devo esibire un certificato che l'utente ha finito un corso, c'è un URL di API che utilizza il metodo get all'interno di un token di avere accesso a un file pdf, il problema è che non so come mostrare o trasformazione di risposta in formato pdf, utilizzando il flutter Ho provato ad usare il url_launcher di dipendenza, perché il browser visualizza il pdf normalmente, ma il problema è che ho bisogno di passare un token per l'url. la seconda cosa che ho provato è stato per prese la risposta delle api e salvarlo in un temporale file e utilizzare flutter_pdfview di dipendenza, ma non mostra errori. questo è come la risposta delle api, assomiglia a questo:

%PDF-1.4
1 0 obj
<<
/Title (þÿ)
/Creator (þÿ)
/Producer (þÿQt 5.5.1)
/CreationDate (D:20211120205047)
>>
endobj
2 0 obj
<<
/Type /Catalog
/Pages 3 0 R
>>
endobj
4 0 obj
<<
/Type /ExtGState
/SA true
/SM 0.02
/ca 1.0
/CA 1.0
/AIS false

questo è quello che ho provato:

 Future LoadPDF(APIurl)async {
    Map<String,String> Headers={
      'Content-type': 'application/json; charset=UTF-8',
      'Accept': 'application/json',
      'Authorization': 'Bearer $userToken'
    };
    final response = await http.get(Uri.parse(APIurl),headers: Headers);
    final bytes = response.bodyBytes;
    // print(response.bodyBytes);
    var dir = await getTemporaryDirectory();
    File file = File(dir.path + "/data.pdf"); 
    await file.writeAsBytes(bytes, flush: true);
    setState(() {
    loadDocument(file);
    });
    // return file;
    
  }
flutter http pdf token
2021-11-21 01:05:05
1

Migliore risposta

0

è possibile utilizzare flutter_pdfview pacchetto per mostrare il 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');
      },
    ),
}
2021-11-21 02:27:47

Ho provato con il pacchetto ma quando ho eseguito il progetto mostra un errore: che Cosa è andato storto: l'Esecuzione non riuscita per attività ':app:checkDebugAarMetadata'. > Potrebbe non risolvere tutti i file di configurazione ':app:debugRuntimeClasspath'. > Impossibile trovare il com.github.barteksc:android-pdf-viewer:3.2.0-beta.1.
Max33

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................