Я застрял, пытаясь реализовать прямую / тихую печать на принтере по IP-адресу, используя канал, указанный c. Я понимаю, что в настоящее время это не доступно на android, и javax.awt не включен в библиотеку android. Вот мой java код, который я звоню из флаттера ниже;
@Override
public void configureFlutterEngine(@NonNull FlutterEngine flutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
new MethodChannel(flutterEngine.getDartExecutor().getBinaryMessenger(), PRINTCHANNEL)
.setMethodCallHandler(
(call, result) -> {
if (call.method.equals("getBatteryLevel")) {
int batteryLevel = getBatteryLevel();
if (batteryLevel != -1) {
result.success(batteryLevel);
} else {
result.error("UNAVAILABLE", "Battery level not available.", null);
}
} else {
if (call.method.equals("printVDocument")) {
try {
result.success(PrintVoucher().toString());
} catch (IOException e) {
e.printStackTrace();
}
} else { }
result.notImplemented();
}
}
);
}
Мне нужно распечатать PDF-файл напрямую на принтер в сети без пользовательского интерфейса. Кто-нибудь, пожалуйста, помогите.
и способ печати.
public String PrintVoucher() throws IOException {
int SDK_INT = Build.VERSION.SDK_INT;
if(SDK_INT > 8)
{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
Socket clientSocket=new Socket("printerIpAddress",80);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
outToServer.writeBytes("! 0 200 200 203 1" + 'n' + "CENTER" + 'n');
clientSocket.close();
return "Printed Successfully";
}