Как декодировать строку PDF base64 во флаттере? - PullRequest
0 голосов
/ 09 апреля 2019

Я знаю, что есть пакет под названием dart: convert, который позволяет мне декодировать изображение base64. Но, видимо, он не работает с файлами PDF. Как я могу декодировать файл base64 PDF в Flutter.

Я хочу сохранить его в Firebase Storage (я знаю, как это сделать), но мне нужна переменная File, чтобы сделать это.

У меня есть веб-сервис, написанный на узле js, где у меня есть POST-маршрут. Там я создаю pdf-файл и кодирую его в base 64. Ответ представляет собой строку base64, посмотрите на код.

router.post('/pdf', (req, res, next) => {
    //res.send('PDF');

    const fname = req.body.fname;
    const lname = req.body.lname;

    var documentDefinition = {
        content: [ write your pdf with pdfMake.org ],
        styles: { write your style };

    const pdfDoc = pdfMake.createPdf(documentDefinition);
    pdfDoc.getBase64((data) => {

        res.send({ "base64": data });

    });
});

Как видите, он возвращает pdf в виде строки base64.

Теперь, во Флаттере, я написал это:

http.post("https://mypostaddreess.com",body: json.encode({"data1":"data"}))
              .then((response) {
            print("Response status: ${response.statusCode}");
            print("Response body: ${response.body}");

            var data = json.decode(response.body);
            var pdf = base64.decode(data["base64"]);

          });

}

Как видите, у меня есть PDF в переменной 'pdf'. Но я не знаю, как расшифровать его, чтобы загрузить PDF или показать в моем приложении Flutter.

1 Ответ

0 голосов
/ 09 апреля 2019

Это должно преобразовать base64 закодированные pdf-данные в байтовый массив.

import 'packages:dart/convert.dart';

List<int> pdfDataBytes = base64.decode(pdfBase64)
  .map((number) => int.parse(number));

Плагины pdf и image , кажется, соответствуют вашим потребностям дляотображение pdf.

Код должен быть примерно таким:

import 'package:pdf/pdf.dart';
import 'package:image/image.dart';

...
Image img = decodeImage(pdfDataBytes);
PdfImage image = PdfImage(
  pdf,
  image: img.data.buffer.asUint8List(),
  width: img.width,
  height: img.height);
// Display it somehow
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...