Display the list of expenses
This commit is contained in:
		
							
								
								
									
										65
									
								
								moneymgr_mobile/lib/utils/pdf_utils.dart
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										65
									
								
								moneymgr_mobile/lib/utils/pdf_utils.dart
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,65 @@
 | 
			
		||||
import 'dart:io';
 | 
			
		||||
import 'dart:math';
 | 
			
		||||
import 'dart:typed_data';
 | 
			
		||||
 | 
			
		||||
import 'package:flutter/material.dart';
 | 
			
		||||
import 'package:path/path.dart' as p;
 | 
			
		||||
import 'package:path_provider/path_provider.dart';
 | 
			
		||||
import 'package:pdf_image_renderer/pdf_image_renderer.dart';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
/// Render PDF to image bits
 | 
			
		||||
Future<Uint8List> renderPdf(
 | 
			
		||||
     {
 | 
			
		||||
      String? path,
 | 
			
		||||
      Uint8List? pdfBytes,
 | 
			
		||||
    }) async {
 | 
			
		||||
  assert(path != null || pdfBytes != null);
 | 
			
		||||
 | 
			
		||||
  // Create temporary file if required
 | 
			
		||||
  var isTemp = false;
 | 
			
		||||
  if (path == null) {
 | 
			
		||||
    path = p.join(
 | 
			
		||||
      (await getTemporaryDirectory()).absolute.path,
 | 
			
		||||
      "render-${Random().nextInt(10000).toString()}+.pdf",
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    await File(path).writeAsBytes(pdfBytes!);
 | 
			
		||||
    isTemp = true;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  try {
 | 
			
		||||
    final pdf = PdfImageRenderer(path: path);
 | 
			
		||||
    await pdf.open();
 | 
			
		||||
    await pdf.openPage(pageIndex: 0);
 | 
			
		||||
 | 
			
		||||
    // get the render size after the page is loaded
 | 
			
		||||
    final size = await pdf.getPageSize(pageIndex: 0);
 | 
			
		||||
 | 
			
		||||
    // get the actual image of the page
 | 
			
		||||
    final img = await pdf.renderPage(
 | 
			
		||||
      pageIndex: 0,
 | 
			
		||||
      x: 0,
 | 
			
		||||
      y: 0,
 | 
			
		||||
      width: size.width,
 | 
			
		||||
      // you can pass a custom size here to crop the image
 | 
			
		||||
      height: size.height,
 | 
			
		||||
      // you can pass a custom size here to crop the image
 | 
			
		||||
      scale: 1,
 | 
			
		||||
      // increase the scale for better quality (e.g. for zooming)
 | 
			
		||||
      background: Colors.white,
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    // close the page again
 | 
			
		||||
    await pdf.closePage(pageIndex: 0);
 | 
			
		||||
 | 
			
		||||
    // close the PDF after rendering the page
 | 
			
		||||
    pdf.close();
 | 
			
		||||
 | 
			
		||||
    return img!;
 | 
			
		||||
  } finally {
 | 
			
		||||
    if (isTemp) {
 | 
			
		||||
      await File(path).delete();
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user