Browse Source

添加导出PDF

newdev_shunjiawei
tanlongsheng 1 year ago
parent
commit
0707008ab3
  1. BIN
      assets/fonts/NotoSansSC-Regular.ttf
  2. 31
      lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart
  3. 2
      pubspec.yaml

BIN
assets/fonts/NotoSansSC-Regular.ttf

Binary file not shown.

31
lib/modules/meeting/views/bottomSheet/share_bottom_sheet.dart

@ -7,6 +7,7 @@ import 'package:flutter_easyloading/flutter_easyloading.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:get_storage/get_storage.dart';
import 'package:htmltopdfwidgets/htmltopdfwidgets.dart' as pdf;
import 'package:path_provider/path_provider.dart';
import 'package:share_plus/share_plus.dart';
import 'package:webview_flutter/webview_flutter.dart';
@ -158,6 +159,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
'导出为',
(int index) async {
if (index == 0) {
// 导出TXT
final tempDir =
await getTemporaryDirectory();
final file = File(
@ -165,7 +167,10 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
await file.writeAsString(_controller
.meetingDetails.value.summary);
_share(file.path, '分享会议总结');
} else {}
} else {
// 导出PDF
_exportMarkdownPdf();
}
},
const [
{
@ -286,7 +291,7 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
);
}
void _share(String filepath, String title) async {
Future<void> _share(String filepath, String title) async {
final result = await SharePlus.instance.share(ShareParams(
text: title,
files: [XFile(filepath)],
@ -332,4 +337,26 @@ class _ShareBottomSheetState extends State<ShareBottomSheet> {
await file.writeAsBytes(byteData.buffer.asUint8List());
return XFile(file.path);
}
Future<void> _exportMarkdownPdf() async {
EasyLoading.show(status: '正在导出PDF...');
final tempDir = await getTemporaryDirectory();
final file = File(
'${tempDir.path}/${_controller.meetingData.value.title}_summary.pdf');
final List<pdf.Widget> markdownWidgets =
await pdf.HTMLToPdf().convertMarkdown(
_controller.meetingDetails.value.summary,
fontFallback: [
pdf.Font.ttf(
await rootBundle.load('assets/fonts/NotoSansSC-Regular.ttf')),
],
);
final markdownPdf = pdf.Document();
markdownPdf.addPage(pdf.MultiPage(
build: (context) => markdownWidgets,
));
await file.writeAsBytes(await markdownPdf.save());
await _share(file.path, '分享会议总结');
EasyLoading.dismiss();
}
}

2
pubspec.yaml

@ -25,6 +25,7 @@ dependencies:
markdown: ^7.1.1
fleather: ^1.24.0+1
parchment: ^1.24.0
htmltopdfwidgets: ^1.1.0
wifi_iot: ^0.3.19+2
permission_handler: ^10.4.5
web_socket_channel: ^2.4.0
@ -134,6 +135,7 @@ flutter:
- assets/images/explore1.png
- assets/images/explore2.jpg
- assets/images/mine-background.png
- assets/fonts/NotoSansSC-Regular.ttf
- assets/lottie/
- assets/js/
- .env

Loading…
Cancel
Save