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

A simple cross-platform (iOS/Android) PDF compressor for Flutter.

example/lib/main.dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:pdf_compressor_pro/pdf_compressor.dart';

void main() => runApp(const MaterialApp(home: DemoPage()));

class DemoPage extends StatefulWidget {
  const DemoPage({super.key});
  @override
  State<DemoPage> createState() => _DemoPageState();
}

class _DemoPageState extends State<DemoPage> {
  final TextEditingController _pathCtrl = TextEditingController();
  String log = 'Enter a full PDF file path and press Compress';

  Future<void> _compress() async {
    final path = _pathCtrl.text.trim();
    if (path.isEmpty) {
      setState(() => log = 'Please enter a file path ending with .pdf');
      return;
    }
    if (!File(path).existsSync()) {
      setState(() => log = 'File not found:\n$path');
      return;
    }

    setState(() => log = 'Compressing...\n$path');
    try {
      final res = await PdfCompressor.compressPdf(
        path,
        level: CompressionLevel.medium,
      );
      setState(() => log = '''
Original: ${res.originalSizeMB.toStringAsFixed(2)} MB
Compressed: ${res.compressedSizeMB.toStringAsFixed(2)} MB
Output: ${res.compressedPath}
Exists: ${File(res.compressedPath).existsSync()}
''');
    } catch (e) {
      setState(() => log = 'Error: $e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('pdf_compressor_pro example')),
      body: Padding(
        padding: const EdgeInsets.all(16),
        child: Column(
          children: [
            TextField(
              controller: _pathCtrl,
              decoration: const InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'Absolute PDF file path',
              ),
              maxLines: 2,
            ),
            const SizedBox(height: 12),
            ElevatedButton(onPressed: _compress, child: const Text('Compress')),
            const SizedBox(height: 12),
            Expanded(child: SingleChildScrollView(child: Text(log))),
          ],
        ),
      ),
    );
  }
}
0
likes
160
points
125
downloads

Publisher

unverified uploader

Weekly Downloads

A simple cross-platform (iOS/Android) PDF compressor for Flutter.

Repository (GitHub)
View/report issues

Topics

#pdf #compressor #documents #flutter-plugin

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on pdf_compressor_pro

Packages that implement pdf_compressor_pro