How to generate QR Code on PDF file in flutter

Viewed 893

I have used this solution How Can I generate QR code and Show it on a PDF page in Flutter but still QR Code isn't being printed.

My code:

  pdf.BarcodeWidget(
              color: PdfColor.fromHex("#000000"),
              barcode:pdf.Barcode.qrCode(), data: "My name is Bilal"
          ),

This is my function:

Future<Uint8List> func_generate_sale_pdf(PdfPageFormat format) {
    final doc = pdf.Document();

    doc.addPage(pdf.Page(build: (pdf.Context context) {
      return pdf.Center(
        child: pdf.Column(children: <pdf.Widget>[

          pdf.Text(config.app_name.toUpperCase(),
              style:
                  pdf.TextStyle(fontSize: 32, fontWeight: pdf.FontWeight.bold)),
          pdf.SizedBox(height: 25),
          pdf.Text(
              " ${languages.skeleton_language_objects[config.app_language]['for_enquiries_call']} : ${config.app_contacts}",
              style: pdf.TextStyle(fontSize: 22)),
          pdf.SizedBox(height: 5),
          pdf.Text("${config.app_po_box}", style: pdf.TextStyle(fontSize: 22)),
          pdf.SizedBox(height: 5),
          pdf.Text(
              "${languages.skeleton_language_objects[config.app_language]['receipt']} # ${receipt_data['receipt_no']}",
              style: pdf.TextStyle(fontSize: 20)),
          pdf.SizedBox(height: 5),
          pdf.Text("${receipt_data['date_time']}",
              style: pdf.TextStyle(fontSize: 20)),
          pdf.SizedBox(height: 30),
          pdf.Container(
            alignment: pdf.Alignment.topLeft,
            child: pdf.Text("${receipt_data['items_list'].toString()}",
                style: pdf.TextStyle(
                    fontSize: 22, fontWeight: pdf.FontWeight.normal),
                textAlign: pdf.TextAlign.left),
          ),
          pdf.SizedBox(height: 30),
          pdf.Container(
              child: pdf.Row(children: <pdf.Widget>[
            pdf.Expanded(
              flex: 1,
              child: pdf.Text(
                  languages.skeleton_language_objects[config.app_language]
                      ['total_amount'],
                  style: pdf.TextStyle(
                      fontSize: 20, fontWeight: pdf.FontWeight.bold),
                  textAlign: pdf.TextAlign.left),
            ),
            pdf.Expanded(
              flex: 1,
              child: pdf.Text("${receipt_data['total_amount']}",
                  style: pdf.TextStyle(fontSize: 20),
                  textAlign: pdf.TextAlign.right),
            ),
          ])),
          pdf.SizedBox(height: 10),
          pdf.Container(
              child: pdf.Row(children: <pdf.Widget>[
            pdf.Expanded(
              flex: 1,
              child: pdf.Text(
                  languages.skeleton_language_objects[config.app_language]
                      ['total_items'],
                  style: pdf.TextStyle(
                      fontSize: 20, fontWeight: pdf.FontWeight.bold),
                  textAlign: pdf.TextAlign.left),
            ),
            pdf.Expanded(
              flex: 1,
              child: pdf.Text("${receipt_data['total_items']}",
                  style: pdf.TextStyle(fontSize: 20),
                  textAlign: pdf.TextAlign.right),
            ),
          ])),
          pdf.SizedBox(height: 10),
          pdf.Container(
              height: 35,
              child: pdf.Row(children: <pdf.Widget>[
                pdf.Expanded(
                  flex: 1,
                  child: pdf.Text(
                      languages.skeleton_language_objects[config.app_language]
                          ['total_tax'],
                      style: pdf.TextStyle(
                          fontSize: 20, fontWeight: pdf.FontWeight.bold),
                      textAlign: pdf.TextAlign.left),
                ),
                pdf.Expanded(
                  flex: 1,
                  child: pdf.Text("${receipt_data['total_tax_amount']}",
                      style: pdf.TextStyle(fontSize: 20),
                      textAlign: pdf.TextAlign.right),
                ),
              ])),
          pdf.SizedBox(height: 35),
          pdf.Text(
              languages.skeleton_language_objects[config.app_language]
                  ['thant_you_and_come_again'],
              style: pdf.TextStyle(fontSize: 24)),


         //From here on, the compiler doesn't print anything.
          pdf.BarcodeWidget(
              color: PdfColor.fromHex("#000000"),
              barcode:pdf.Barcode.qrCode(), data: "My name is Bilal"
          ),
          pdf.Text("SkillzUPP Technologies: +923058431046",
              style: pdf.TextStyle(fontSize: 24),
              textAlign: pdf.TextAlign.center),
          pdf.SizedBox(height: 10),

        ]),
      ); // Center
    }));

    return doc.save();
  }

Everything prints fine except QR Code and at that specific line this error is shown at terminal:

Helvetica-Bold has no Unicode support see https://github.com/DavBfr/dart_pdf/wiki/Fonts-Management
1 Answers

I had a problem showing that line "has no Unicode support..." to fix that i created a folder fonts on my project and added some true type fonts to it, then i created a pdf theme for the document like below:

var myTheme = ThemeData.withFont(
      base: Font.ttf(await rootBundle.load("fonts/OpenSans-Regular.ttf")),
      bold: Font.ttf(await rootBundle.load("fonts/OpenSans-Bold.ttf")),
      italic: Font.ttf(await rootBundle.load("fonts/OpenSans-Italic.ttf")),
      boldItalic:
          Font.ttf(await rootBundle.load("fonts/OpenSans-BoldItalic.ttf")),
    );

then i used the theme in the page of the document and the error was gone, like below:

Page(theme: myTheme,...)

I'm not sure if is the same case, but i think you should try.

Related