Tôi đang nghiên cứu ứng dụng tiềm năng cho khách hàng và tôi đã có câu hỏi mà tôi không thể tìm thấy câu trả lời. Những gì tôi muốn làm là tự động in, mà không cần hiển thị UIPrintInteractionController
. Một điểm quan trọng tôi nên thực hiện là này sẽ không là một ứng dụng sản xuất. Tôi biết rằng nếu không điều này có thể vi phạm quyền riêng tư của người dùng để chỉ in mà không có sự đồng ý của người dùng, nhưng một lần nữa điều này sẽ không phải là một ứng dụng công khai trên App Store. Một ứng dụng tôi thấy có vẻ như có thể là Printer Pro
. Người dùng được nhắc in trang thử nghiệm và trang in mà không xuất hiện UIPrintInteractionController
- ứng dụng này có trên cửa hàng, vì vậy tôi giả sử có cách hợp pháp để thực hiện. Bất cứ ai biết làm thế nào điều này được thực hiện?In iOS mà không cho phép UIPrintInteractionController xuất hiện
Trả lời
Theo như tôi biết không thể in trong iOS7 mà không cần gọi UIPrintInteractionController
và hiển thị hộp thoại in của hệ thống.
Tuy nhiên, hiện tại iOS8 cung cấp điều khoản để in trực tiếp vào bản in mà không hiển thị hộp thoại. Ý tưởng cơ bản là bạn có được đối tượng UIPrinter
và sử dụng đối tượng này cùng với phương pháp - printToPrinter:completionHandler:
mới của UIPrintInteractionController
để in mà không hiển thị hộp thoại.
Lấy đối tượng UIPrinter
cho máy in của bạn có thể được thực hiện theo một vài cách.
Cách đơn giản nhất là sử dụng UIPrinterPickerController
mới. Nhưng điều này sẽ hiển thị một hộp thoại và do đó không đáp ứng nhu cầu của bạn.
Cách khác là tạo máy in qua URL của máy in bằng cách sử dụng phương thức UIPrinter
+ printerWithURL:
. Tôi không hoàn toàn rõ ràng cách lấy URL này nhưng URL này có thể nằm trong các trang quản trị HTML của máy in. Và tôi tin rằng bạn có thể lấy nó theo lập trình bằng cách sử dụng API Bonjour. Xem thêm thông tin ở đây:
Bonjour là một khám phá API dịch vụ trong đó bao gồm phát hiện ra máy in IPP, đó là giao thức được sử dụng bởi AirPrint.
Đối với cách ứng dụng Printer Pro có thể in mà không có hộp thoại trong iOS7, tôi đoán chúng tương tác với máy in ở mức rất thấp (ví dụ: bài đăng HTTP thô, v.v.).
Điều này hoạt động tốt, dường như ngoại trừ máy in được chia sẻ bởi các ly (ví dụ: trên ubuntu). Ví dụ tôi không thể in ra một trong hai máy in của tôi được chia sẻ với ubuntu/CUPS qua printToPrinter: trong ứng dụng của tôi, nhưng ứng dụng của tôi có thể in trực tiếp tới 2 máy in CP910 của Canon. Đồng thời, ứng dụng Ảnh gốc có thể in ra 2 máy in của tôi được chia sẻ bởi ubuntu/CUPS. Vì vậy, không phải tất cả mọi thứ hoạt động với printToPrinter: Cập nhật – xaphod
: workaround tôi tìm thấy là để lưu trữ cả hai URL cho máy in và một tham chiếu mạnh mẽ để UIPrinter là tốt. Nếu không thể kết nối URL, hãy thử trực tiếp UIPrinter.Cảnh báo này hoạt động ... trông giống như một lỗi iOS 8 vì không có lý do tại sao URL không thể được sử dụng AFAIK – xaphod
Thực hiện theo các bước sau để In các tài liệu mà không nhắc ..
tìm kiếm đầu tiên cho các thiết bị Sử dụng Bộ luật Dưới đây ...
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
UIPrinterPickerController *printPicker = [UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:nil];
[printPicker presentAnimated:YES completionHandler:
^(UIPrinterPickerController *printerPicker, BOOL userDidSelect, NSError *error) {
if (userDidSelect) {
//User selected the item in the UIPrinterPickerController and got the printer details.
[UIPrinterPickerController printerPickerControllerWithInitiallySelectedPrinter:printerPicker.selectedPrinter];
// Here you will get the printer and printer details.ie,
// printerPicker.selectedPrinter, printerPicker.selectedPrinter.displayName, printerPicker.selectedPrinter.URL etc. So you can display the printer name in your label text or button title.
NSURL *printerURL = printerPicker.selectedPrinter.URL;
NSLog(@"printerURL--->%@",printerURL.absoluteString);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:[printerURL absoluteString] forKey:@"printURL"];
[defaults synchronize];
}
}];
}
Và In Văn bản do mà không nhắc bằng cách sử dụng mã dưới đây. ..
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
UIPrinter *currentPrinterObj = [UIPrinter printerWithURL:[NSURL URLWithString:[defaults stringForKey:[defaults stringForKey:@"printURL"]]]];
UIPrintInteractionController *controller = [UIPrintInteractionController sharedPrintController];
if(currentPrinterObj) {
[controller printToPrinter:currentPrinterObj completionHandler:^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
if(completed) {
} else {
NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
}
}];
}
}
Chỉnh sửa bài đăng và thụt lề mã (nút mã) –
- 1. AirPrint: Đặt máy in mặc định trong UIPrintInteractionController
- 2. respondsToSelector không xuất hiện proxy
- 3. Proxy xuất hiện - setShadowHình ảnh thay thế cho iOS 5?
- 4. Git cho phép tôi chuyển đổi các chi nhánh mà không thực hiện các thay đổi
- 5. UINavigationBar xuất hiện override trong iOS 5
- 6. Khoảng cách in đẹp cho iOS
- 7. iOS 6 không cho phép xemWillUnload & di chuyển đến didReceiveMemoryWarning
- 8. rightBarButtonItem không xuất hiện trong Navigation Bar iOS
- 9. iOS 5 [UINavigationBar xuất hiện] setBackgroundImage không hoạt động
- 10. Phép trừ mà không tràn?
- 11. Thư viện SIP cho iOS với giấy phép không GPL
- 12. chứng Đẩy không xuất hiện khi tạo một hồ sơ trong iOS cổng dev
- 13. cd vào thư mục mà không cần sự cho phép
- 14. iOS: CFTypeRef không được phép với ARC
- 15. Các Just-In-Time debugger đã được đưa ra mà không cho phép bảo mật cần thiết
- 16. $ .get - Không được phép xuất xứ
- 17. IE10 - cách ngăn không cho cửa sổ bật lên "Cài đặt bảo mật hiện tại của bạn không cho phép tải xuống tệp này" xuất hiện?
- 18. iOS 5: Twitter xem nhà soạn nhạc xuất hiện chậm
- 19. Giấy phép nhà phát triển 99 đô la iOS có cho phép tôi xuất bản một ứng dụng hay nhiều ứng dụng không?
- 20. Xuất hiện kiểu ngày nhập trong Safari trên iOS
- 21. iOS - UITextView tắt di chuyển nhưng cho phép chạm
- 22. Bạn có phải trả phí cấp phép cho chương trình cho iPhone/iOS không?
- 23. $ .ajax(): Xuất xứ rỗng không được phép
- 24. Đăng xuất Sự cố đăng xuất bằng facebook iOS sdk
- 25. Xuất Mathematica In [] Xuất ra tệp .txt
- 26. AutoCompleteTextView chỉ cho phép các tùy chọn được đề xuất
- 27. cho phép người dùng Crop ảnh trong ứng dụng iOS
- 28. Cách chuyển PDF dưới dạng đầu vào cho máy in
- 29. Matplotlib: chỉ cho phép in chữ cái đầu tiên
- 30. UIBarButtonItem không xuất hiện
Bạn có câu trả lời cho câu hỏi này không? –
Thật không may, không. Đây là một liên kết có liên quan http://stackoverflow.com/questions/5135781/ipad-iphone-printing-directly-to-a-network-printer-without-airprint-popover?rq=1 – coder