我正在尝试使用 Flutter 以编程方式将 DOCX 文件中的占位符替换为特定文本,而不依赖于任何服务器端处理。我需要直接在 Flutter 应用程序中使用文本“Deepak Kumar”更新占位符 {name}。
我的文档如下所示
我已经尝试使用
docx_template
包来操作 DOCX 文件,但仍然遇到错误和限制。我考虑过使用 flutter_quill
进行编辑,但它不支持直接 DOCX 操作。我正在寻找一个仅适用于 Flutter 的解决方案,不涉及服务器端处理。
这是我尝试操作 DOCX 文件的 Flutter 代码的简化版本:
import 'package:flutter/services.dart';
import 'package:docx_template/docx_template.dart';
void _loadAndDisplayDocx() async {
try {
final ByteData? data = await rootBundle.load('assets/docs/template.docx');
if (data == null) {
debugPrint("Failed to load the DOCX file.");
return;
}
final Uint8List bytes = data.buffer.asUint8List();
if (bytes.isEmpty) {
debugPrint("DOCX file is empty after loading.");
return;
}
final DocxTemplate docx = await DocxTemplate.fromBytes(bytes);
if (docx == null) {
debugPrint("Failed to initialize the DOCX template.");
return;
}
final Content content = Content()..add(TextContent("name", "Deepak Kumar"));
final List<int>? docGenerated = await docx.generate(content);
if (docGenerated == null) {
debugPrint("Failed to generate the document.");
return;
}
final Directory directory = await getApplicationDocumentsDirectory();
final File file = File('${directory.path}/output.docx');
await file.writeAsBytes(docGenerated);
final String? openResult = await OpenFile.open(file.path);
if (openResult != "done") {
debugPrint("Failed to open the document: $openResult");
}
} catch (e) {
debugPrint("Error generating or opening document: $e");
}
}
生成或打开文档时出错:对空值使用空检查运算符
我也在尝试做类似的事情,但到目前为止还没有解决方案。 您能解决这个问题吗?