无法删除在flutter iOS中使用html / css创建的pdf的页面外部空白

jaz*_*bpn 6 html css pdf-generation ios flutter

我正在尝试删除使用flutter-iOS-app中的HTML / css创建的PDF的外部空白边距。在android的情况下,布局工作正常,但在iOS的情况下,存在左页边距问题,如iOS附件所示。

使用DartPdf在Github上发行: 在DartPdf上发行

在Github上使用flutter_html_to_pdf 发行在flutter_html_to_pdf发行

我使用这些库是为了将html转换并呈现​​为pdf。

pubspec.yaml

dev_dependencies:
  flutter_test:
    sdk: flutter
  pdf: ^1.3.17
  printing: ^2.0.0
  flutter_full_pdf_viewer: ^1.0.4
Run Code Online (Sandbox Code Playgroud)

将HTML打印为PDF的方法:

Future<void> printPdfMethod() async {
  print('Print ...');
  await Printing.layoutPdf(onLayout: (PdfPageFormat format) async {
    return await Printing.convertHtml(
        format: PdfPageFormat.a4
            .applyMargin(left: 0, top: 0, right: 0, bottom: 0),
        html:
            '<?xml version="1.0"?> <html> <head> <title>CSS Template</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <style> @page { size: A4; margin: 0mm 0mm 0mm 0mm; padding:0mm 0mm 0mm 0mm; } body { margin: 0px; padding: 0px; position: static; width:100%; height:100%; } </style> </head> <body style="margin:0;padding:10" bgcolor="#144434"> <h1 style="color:white">Test Layout Margin</h1></body> </html>');
  });
}
Run Code Online (Sandbox Code Playgroud)

样式属性:使用此属性,保证金问题在android中得以解决,但在iOS case上仍然不起作用

@page {
        size: A4;
        margin: 0mm 0mm 0mm 0mm;
    }

body {
        margin: 0px;
        padding: 0px;
    }
Run Code Online (Sandbox Code Playgroud)

Android屏幕截图:

在此处输入图片说明

iOS屏幕截图:

在此处输入图片说明

必需的结果: pdf将仅包含深绿色的布局,并删除iOS和android中的外部白色间距。

注意(当页面为两页或更多时):如果iOS使用此format属性(格式:PdfPageFormat.a4 .applyMargin(left:0,top:0,right:0,bottom:0)),则PDF分割了一些的视图或数据不可见或隐藏。

jaz*_*bpn 4

最后这将解决打印问题:

我们必须使用 copyWith(..) 设置边距。applyMargin(..) 只会增加您已有的保证金。并且您还必须使用提供的纸张格式:

await Printing.layoutPdf(onLayout: (PdfPageFormat format) async {
  return await Printing.convertHtml(
      format: format.copyWith(marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0),
      html: '<?xml version="1.0"?><html><body style="margin:0;padding:0" bgcolor="#144434"><h1 style="color:white">Test Layout Margin</h1></body></html>');
});
Run Code Online (Sandbox Code Playgroud)