Flutter pdf generation too slow with image
flutter_html_to_pdf plugin for iOS and Android for generating PDF files from HTML.
use:
https://pub.dev/packages/flutter_html_to_pdf
instead of:
First, add flutter_html_to_pdf as a dependency in your pubspec.yaml file.
dependencies: flutter_html_to_pdf: ^0.5.2
Now in your Dart code, you can use:
import 'package:flutter_html_to_pdf/flutter_html_to_pdf.dart';
Usage #
var htmlContent = """ <!DOCTYPE html> <html> <head> <style> table, th, td { border: 1px solid black; border-collapse: collapse; } th, td, p { padding: 5px; text-align: left; } </style> </head> <body> <h2>PDF Generated with flutter_html_to_pdf plugin</h2> <table style="width:100%"> <caption>Sample HTML Table</caption> <tr> <th>Month</th> <th>Savings</th> </tr> <tr> <td>January</td> <td>100</td> </tr> <tr> <td>February</td> <td>50</td> </tr> </table> <p>Image loaded from web</p> <img src="https://i.imgur.com/wxaJsXF.png" alt="web-img"> </body> </html> """; var targetPath = "/your/sample/path"; var targetFileName = "example_pdf_file" var generatedPdfFile = await FlutterHtmlToPdf.convertFromHtmlContent( htmlContent, targetPath, targetFileName);
You can also pass File object with HTML content inside as parameter
var file = File("/sample_path/example.html"); var generatedPdfFile = await FlutterHtmlToPdf.convertFromHtmlFile( file, targetPath, targetFileName);
or even just path to this file
var filePath = "/sample_path/example.html"; var generatedPdfFile = await FlutterHtmlToPdf.convertFromHtmlFilePath( filePath, targetPath, targetFileName);
ImagesIf you want to add local image from device to your HTML you need to pass path to image as src value.
<img src="file:///storage/example/your_sample_image.png" alt="web-img">
or if you want to use the image File object
<img src="${imageFile.path}" alt="web-img">
And for Multiple images you can add multiple tags like:
<img src="your source" alt="your alternative"> <img src="your source" alt="your alternative"> <img src="your source" alt="your alternative"> <img src="your source" alt="your alternative"> <img src="your source" alt="your alternative">