// Automatic FlutterFlow imports
import '/backend/backend.dart';
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/actions/index.dart'; // Imports other custom actions
import '/flutter_flow/custom_functions.dart'; // Imports custom functions
import 'package:flutter/material.dart';
// Begin custom action code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!
import 'package:http/http.dart';
import 'package:flutter/services.dart';
import 'package:pdf/widgets.dart';
import 'dart:io';
import 'package:http/http.dart' as http;
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw;
import 'package:printing/printing.dart';
Future exportPDF(
BuildContext context,
List<OrdersRecord> ordersDoc,
String name,
String imgurl,
String date,
) async {
// Add your function code here!
final fontData = await loadFontData(
'https://arbfonts.com//wp-content/fonts/brands-arasbic-fonts//BoutrosNewsH1-Bold.ttf');
final ttf = pw.Font.ttf(fontData);
final pdf = pw.Document();
final netImage = await networkImage(imgurl);
pdf.addPage(pw.MultiPage(
pageFormat: PdfPageFormat.a4,
textDirection: pw.TextDirection.rtl,
theme: pw.ThemeData.withFont(
base: ttf,
),
build: (context) => [
pw.Header(
level: 0,
child: pw.Row(
children: [
pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.start,
children: [
pw.Row(
crossAxisAlignment: pw.CrossAxisAlignment.start,
mainAxisAlignment:
pw.MainAxisAlignment.spaceBetween,
children: [
pw.Padding(
padding: pw.EdgeInsetsDirectional.fromSTEB(
5, 0, 5, 0),
child: pw.Text(
'ุงูู
ูุฏูุจ',
),
),
pw.Padding(
padding: pw.EdgeInsetsDirectional.fromSTEB(
0, 0, 0, 0),
child: pw.Text(
name,
),
)
]),
pw.Row(
crossAxisAlignment: pw.CrossAxisAlignment.start,
mainAxisAlignment:
pw.MainAxisAlignment.spaceBetween,
children: [
pw.Padding(
padding: pw.EdgeInsetsDirectional.fromSTEB(
5, 5, 5, 5),
child: pw.Text(
'ุงูุชุงุฑูููุฎ',
),
),
pw.Padding(
padding: pw.EdgeInsetsDirectional.fromSTEB(
0, 5, 0, 5),
child: pw.Text(
date,
),
)
]),
]),
pw.Image(netImage,
fit: pw.BoxFit.contain, width: 100, height: 100)
],
mainAxisAlignment: pw.MainAxisAlignment.spaceBetween,
)),
pw.Table.fromTextArray(
context: context,
headerStyle: pw.TextStyle(font: ttf),
cellAlignment: pw.Alignment.topRight,
columnWidths: {
0: pw.FlexColumnWidth(2), // fixed to 100 width
1: pw.FlexColumnWidth(1.5),
2: pw.FlexColumnWidth(3), //fixed to 100 width
3: pw.FlexColumnWidth(3),
4: pw.FlexColumnWidth(3),
5: pw.FlexColumnWidth(4),
6: pw.FlexColumnWidth(1),
},
data: <List<String>>[
<String>[
'ู
ูุงุญุธุงุช',
'ุงูุณุนุฑ',
'ุงูุตูุญุฉ',
'ุฑูู
ุจุฏูู',
'ุฑูู
ุงููุงุชู',
'ุงูุนููุงู',
'#'
],
...ordersDoc.map((order) => [
order.notes,
order.cod.toString(),
order.pagename,
order.phone2.toString(),
order.phone1.toString(),
order.adress,
(ordersDoc.indexOf(order) + 1).toString(),
])
]),
pw.Footer(
padding: pw.EdgeInsets.fromLTRB(0, 20, 0, 0),
trailing: pw.Row(
crossAxisAlignment: pw.CrossAxisAlignment.start,
children: [
pw.Column(
crossAxisAlignment: pw.CrossAxisAlignment.center,
children: [
pw.Padding(
padding:
pw.EdgeInsetsDirectional.fromSTEB(5, 5, 5, 5),
child: pw.Text(
'ุชูููููุน ุงูู
ุณุชูููู
',
),
),
pw.Padding(
padding:
pw.EdgeInsetsDirectional.fromSTEB(5, 5, 5, 5),
child: pw.Text(
'.........................',
),
),
])
])),
]));
// Print the pdf file
await Printing.layoutPdf(
onLayout: (PdfPageFormat format) async => pdf.save());
}
Future<ByteData> loadFontData(String url) async {
final response = await http.get(Uri.parse(url));
if (response.statusCode == 200) {
return response.bodyBytes.buffer.asByteData();
} else {
throw Exception('Failed to load font from URL');
}
}