LKC*_*LKC 3 printing pdf flutter
我是 flutter 新手,在遵循 PDF 发票教程时遇到一些问题。第一次打印 PDF 时一切正常,但在添加/编辑一些数据后的第二次尝试中,PDF 文件仍然是第一个 PDF,我收到了标题所示的错误。
未处理的异常:'package:pdf/src/widgets/document.dart':断言失败:第117行第12行:'!_paint':文档已保存。
以下是我的代码的一部分
onClicked: () async {
final date = DateTime.now();
final dueDate = date.add(Duration(days: 7));
final invoice = Invoice(
supplier: Supplier(
name: '..',
address: '000',
paymentInfo: '**.com',
),
info: InvoiceInfo(
date: date,
dueDate: dueDate,
description: data.texttobeinsert,
number: '${DateTime.now().year}-9999',
),
infoYourSignature: InvoiceInfo2(
date: date,
dueDate: dueDate,
description: data.texttobeinsert2,
number: '${DateTime.now().year}-9999',
),
items: [
InvoiceItem(
description:
AppLocalizations.of(context)!
.translate('net_monthly_incomedsr')!,
unitPrice: AppLocalizations.of(context)!
.translate('currency')! +
oCcy1.format(data.netmonthlyincome),
),
InvoiceItem(
description: AppLocalizations.of(context)!
.translate('other_income')!,
// date: DateTime.now(),
// quantity: 8,
// vat: 0.19,
unitPrice: AppLocalizations.of(context)!
.translate('currency')! +
oCcy1.format(data.otherincome),
),
InvoiceItem(
description: data.friendlist1.isEmpty
? "[n/a]"
: "[" +
data.friendlist1 +
", " +
data.friendlist2 +
"]",
unitPrice: ""),
InvoiceItem(
description:
AppLocalizations.of(context)!.translate('ndi')!,
unitPrice: AppLocalizations.of(context)!
.translate('currency')! +
oCcy1.format(data.ndi),
),
],
);
final pdfFile = await PdfInvoiceApiDsr.generate(invoice);
PdfApi.openFile(pdfFile);
},
),
Run Code Online (Sandbox Code Playgroud)
PdfInvoiceApiDsr.dart(部分)
import '../api/pdf_api.dart';
import '../model/customer.dart';
import '../model/invoice.dart';
import '../model/supplier.dart';
import '../utils.dart';
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw;
import 'package:pdf/widgets.dart';
int runonceforprinting = 1;
final pdf = pw.Document();
final imageA = PdfImage.file(
pdf.document,
bytes: File('assets/icon/icon2.png').readAsBytesSync(),
);
var profileImage;
class PdfInvoiceApiDsr {
static Future<File> generate(Invoice invoice) async {
profileImage = pw.MemoryImage(
(await rootBundle.load('assets/icon/icon2.png')).buffer.asUint8List(),
);
pdf.addPage( <----this error from here, it tells the error : the _paint has been saved!..
pw.MultiPage(
build: (context) => [
buildHeader(invoice),
SizedBox(height: 0.05 * PdfPageFormat.cm),
buildTitle(invoice),
buildInvoice(invoice),
],
footer: (context) => buildFooter(invoice),
),
);
Run Code Online (Sandbox Code Playgroud)
....
PDFAPI
class PdfApi {
static Future<File> saveDocument({
required String name,
required Document pdf,
}) async {
final bytes = await pdf.save();
final dir = await getApplicationDocumentsDirectory();
final file = File('${dir.path}/$name');
file.writeAsBytesSync(bytes);
return file;
}
static Future openFile(File file) async {
final url = file.path;
await OpenFile.open(url);
}
}
Run Code Online (Sandbox Code Playgroud)
小智 7
我有同样的问题,但我像这样解决它尝试final pdf = pw.Document()在你的方法中添加generate(Invoice invoid),所以当你离开页面时,你的pdf文件也会被删除,并且你总是创建一个新的pdf文件
所以:
class PdfInvoiceApiDsr {
static Future<File> generate(Invoice invoice) async {
profileImage = pw.MemoryImage(
(await rootBundle.load('assets/icon/icon2.png')).buffer.asUint8List(),
);
final pdf = pw.Document()
pdf.addPage( <----this error from here, it tells the error : the _paint has been saved!..
pw.MultiPage(
build: (context) => [
buildHeader(invoice),
SizedBox(height: 0.05 * PdfPageFormat.cm),
buildTitle(invoice),
buildInvoice(invoice),
],
footer: (context) => buildFooter(invoice),
),
);`
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |