Cómo mostrar un pdf obtenido de una API de respuesta en flutter?

0

Pregunta

Estoy trabajando en un proyecto donde tengo que mostrar el certificado de que el usuario termine un curso, no es una dirección de URL de la API que utiliza el método get dentro de un token para acceder a un archivo pdf, el problema es que no sé cómo mostrar o transformar esa respuesta en un documento pdf, el uso de aleteo, Traté de usar la url_launcher de dependencia porque en el navegador muestra el pdf con normalidad, pero el problema es que necesito para pasar un token de esa url. la segunda cosa que intenté fue traída la respuesta de la api y la guarda en un archivo temporal y el uso flutter_pdfview dependencia, pero muestra los errores. esto es cómo la respuesta de la api se ve así:

%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

esto es lo que he intentado:

 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

Mejor respuesta

0

usted puede utilizar flutter_pdfview paquete para mostrar 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

He probado con ese paquete pero cuando voy a ejecutar el proyecto muestra un error: Lo que salió mal: error en la Ejecución de la tarea ':app:checkDebugAarMetadata'. > No se puede resolver todos los archivos de configuración ':app:debugRuntimeClasspath'. > No se puede encontrar com.github.barteksc:android-pdf-visor:3.2.0-beta.1.
Max33

En otros idiomas

Esta página está en otros idiomas

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