pdfme_flutter 0.1.2 copy "pdfme_flutter: ^0.1.2" to clipboard
pdfme_flutter: ^0.1.2 copied to clipboard

Generate PDFs on-device from pdfme Designer templates. Pass template JSON and inputs, get PDF bytes — no server required.

example/lib/main.dart

import 'dart:convert';
import 'dart:io';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';
import 'package:pdfme_flutter/pdfme_flutter.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  runApp(const MaterialApp(home: GeneratePage()));
}

class GeneratePage extends StatefulWidget {
  const GeneratePage({super.key});

  @override
  State<GeneratePage> createState() => _GeneratePageState();
}

class _GeneratePageState extends State<GeneratePage> {
  String _status = 'Tap generate';
  bool _busy = false;

  Future<void> _generate() async {
    setState(() {
      _busy = true;
      _status = 'Generating…';
    });

    try {
      final templateJson =
          await rootBundle.loadString('assets/templates/invoice.json');
      final template =
          jsonDecode(templateJson) as Map<String, dynamic>;

      // Editable fields from the Designer template (read-only labels stay in template).
      final inputs = [
        {
          'billedToInput':
              'Kamesh Adadadi\n+91-98765-43210\n12 MG Road, Bengaluru, KA, India 560001',
          'info': jsonEncode({
            'InvoiceNo': 'INV-7842',
            'Date': '4 September 2026',
          }),
          'orders': jsonEncode([
            ['Wireless Mouse', '2', '899', '1798'],
            ['USB-C Hub', '1', '2499', '2499'],
            ['Laptop Sleeve', '1', '1299', '1299'],
          ]),
          'taxInput': jsonEncode({'rate': '18'}),
          'paymentInfoInput':
              'HDFC Bank\nAccount Name: Kamesh Adadadi\nAccount No.: 50100-234-5678\nPay by: 18 September 2026',
        },
      ];

      final pdfBytes = await PdfmeGenerator.generate(
        template: template,
        inputs: inputs,
      );

      final dir = await getApplicationDocumentsDirectory();
      final file = File('${dir.path}/output.pdf');
      await file.writeAsBytes(pdfBytes, flush: true);

      setState(() => _status = 'Saved: ${file.path}');
    } on PdfmeException catch (e) {
      setState(() => _status = '$e');
    } catch (e) {
      setState(() => _status = 'Error: $e');
    } finally {
      setState(() => _busy = false);
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('pdfme_flutter')),
      body: Padding(
        padding: const EdgeInsets.all(24),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            FilledButton(
              onPressed: _busy ? null : _generate,
              child: Text(_busy ? 'Generating…' : 'Generate PDF'),
            ),
            const SizedBox(height: 16),
            SelectableText(_status),
          ],
        ),
      ),
    );
  }
}
0
likes
160
points
151
downloads

Documentation

Documentation
API reference

Publisher

unverified uploader

Weekly Downloads

Generate PDFs on-device from pdfme Designer templates. Pass template JSON and inputs, get PDF bytes — no server required.

Repository (GitHub)
View/report issues

Topics

#pdf #pdfme #generator #offline #flutter-plugin

License

MIT (license)

Dependencies

flutter

More

Packages that depend on pdfme_flutter

Packages that implement pdfme_flutter