How to convert Assets Images & Icons to PdfImage in flutter using dart_pdf

6,733

Solution 1

Use this instead:

final PdfImage assetImage = await pdfImageFromImageProvider(
    pdf: pdf.document, 
    image: const AssetImage('assets/test.jpg'),
);

Solution 2

This function will create your pdf with image and custom data

 var pdf = new pw.Document();

 Future<pw.Document> createPDF() async {
    var assetImage = pw.MemoryImage(
      (await rootBundle.load('assets/images/delivery.png'))
          .buffer
          .asUint8List(),
    );

    pdf.addPage(pw.Page(
        pageFormat: PdfPageFormat.a4,
        build: (pw.Context context) {
          var width = MediaQuery.of(this.context).size.width;
          var height = MediaQuery.of(this.context).size.height;
          return pw.Container(
            margin: pw.EdgeInsets.only(top: height * 0.1),
            child: pw.ListView(
              children: [
                // your image here
                pw.Container(
                    height: height * 0.25, child: pw.Image(assetImage)),
              // other contents
                pw.Row(
                  mainAxisAlignment: pw.MainAxisAlignment.spaceAround,
                  children: [
                    pw.Text("order Id:"),
                    pw.Text(widget.doc['orderId']),
                  ],
                ),
              ],
            ),
          );
        }));
        
    return pdf;
  }

use this function to save

 Future savePdf(pw.Document pdfnew) async {
    String pdfName;
    File file;

    try {
      
      var documentDirectory = await AndroidPathProvider.downloadsPath; // for android downloads folder
    //  var localDirectory = await getApplicationDocumentsDirectory(); // for local directory
    
      setState(() {
        pdfName = "your_pdf_name";
      });
  
      file = File("$documentDirectory/$pdfName.pdf");
      await file.writeAsBytes(await pdf.save());
   
      return file.path;
    } catch (e) {
      print(e);
    }
  
  }
Share:
6,733
jazzbpn
Author by

jazzbpn

With 6+ years of experience, I have developed many iOS/android applications in different context, professional and oldest passion for computer programming began very early in my life. I've learned the social environment is as important as logic aspects of the developing approach then I appreciate very much to get in touch with positive and eager colleagues that involve me in new and exciting challenges. This is why I still want to get involved in new opportunities to improve my skillness.

Updated on December 12, 2022

Comments

  • jazzbpn
    jazzbpn over 1 year

    Used Library: dart_pdf After searching I found the same issue in GITHUB but unable to resolve the issue. I tried this but blurry image appears. Please help!!

      ByteData data = await rootBundle.load('assets/test.jpg');
      var codec = await instantiateImageCodec(data.buffer.asUint8List());
      var frame = await codec.getNextFrame();
    
      var imageBytes = await frame.image.toByteData();
      PdfImage assetImage = PdfImage(pdf.document,
          image: imageBytes.buffer.asUint8List(), width: 86, height: 80);
    

    Rendered Image:

    enter image description here