【问题标题】:flutter send PDF data to a printer颤振将PDF数据发送到打印机
【发布时间】:2021-11-05 06:56:04
【问题描述】:

我已使用wifip2p 插件成功发现并连接到打印机。 我想通过将 URL 或资产发送到打印机来打印 PDF 文件。

请告诉我如何在连接打印机后通过将 PDF 数据发送到打印机进行打印。感谢您回答问题。

搜索打印

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:wifip2p/wifip2p.dart';

class SearchIconButton extends StatelessWidget {
  const SearchIconButton({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {

    Size size = MediaQuery.of(context).size;

    return Stack(
      children: <Widget>[
        Positioned(
          right: size.width * 0.02,
          bottom: size.height * 0.02,
          child: FloatingActionButton(
            onPressed: () async{
              try{
                await WifiP2P.discoverDevices();
              }on PlatformException{
                print('Error!');
              }
            },
            child: Icon(Icons.search),
          ),
        ),

      ],
    );
  }
}

写下打印名称

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';
import 'package:wifip2p/wifip2p.dart';

class WritePrintName extends StatelessWidget {
  const WritePrintName({Key? key}) : super(key: key);

  Future<void> conntectToDevice(int position) async{
    CircularProgressIndicator();
    try{
      await WifiP2P.connectToDevice(position);
    }on PlatformException{
      print('Error!');
    }
  }

  @override
  Widget build(BuildContext context) {

    Size size = MediaQuery.of(context).size;

    return Positioned(
      top: size.height * 0.1,
      child: StreamBuilder(
        stream: WifiP2P.peerListChangeEvent,
        builder: (BuildContext context, AsyncSnapshot<List<String>> snapshot){
          if(snapshot.hasData){
            List<Container> list = [];
            for(int nIndex=0; nIndex<snapshot.data!.length; nIndex++){
              list.add(Container(
                width: size.width,
                height: size.height * 0.05,
                alignment: Alignment.center,
                child: TextButton(
                  onPressed: (){
                    conntectToDevice(nIndex);
                  },
                  child: Text(snapshot.data![nIndex], textAlign: TextAlign.center,),
                ),
              ));
            }
            return Column(children: list,);
          }
          return Container(
            width: size.width,
            height: size.height * 0.05,
            alignment: Alignment.center,
            child:Text(
              '검색된 프린터가 없습니다.',
              style: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
            ) ,
          );
        },
      ),
    );
  }
}

【问题讨论】:

  • 您可以为此使用打印 Pkg pub.dev/packages/printing
  • 打印插件有一个输出 pw.FlutterLogo() 的例子。你知道如何在此处更改为我的 pdf 吗??
  • 你想在这里改变什么?
  • 我的来源没有问题。它通常连接到打印机。如您所说,我使用了打印插件,但是如果您查看打印插件的示例,它会通过 page.add 创建一个文档。我想打印一份已有的 PDF。

标签: flutter dart pdf printing wifi


【解决方案1】:

您可以通过安装this 包来做到这一点:

【讨论】:

  • 我知道这个包。我使用 PDF.Page.add() 创建 PDF,你知道如何打印现有的 PDF 吗?
  • 您只需要指定您不想打印而是另存为pdf,当您选择打印机时选择另存为pdf即可。
  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多