2 lwq421336220 lwq421336220 于 2012.12.26 16:38 提问

iOS如何连接打印机,打印一段字符串

我想要再ipad程序里面,用代码给打印机发送一段字符串,然后打印。
各位,我的问题没有说清楚,不好意思。
情况是这样的,我现在想要连接到打印机,wifi的,然后给打印机发送一个字符串去打印。连接打印机不知道怎么连接,然后发送消息这个也不知道咋整。各位帮帮忙。
打印机和ipad在同一个局域网下,想用socket通过打印机的ip地址进行传送要打印的内容。

6个回答

lwq421336220
lwq421336220   2012.12.27 17:27
已采纳

.h 里面

#import <UIKit/UIKit.h>
#import "AsyncSocket.h"

@interface ViewController : UIViewController<AsyncSocketDelegate>
{
    AsyncSocket *asyncSocket;
}

@end

.m里面

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    //    NSError *err = nil;
    //    if(![asyncSocket connectToHost:@"192.168.1.105" onPort:18011 error:&err])
    //    {
    //        asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];
    //
    //        [asyncSocket setRunLoopModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];
    //
    //        if (![self SocketOpen:@"192.168.1.105" port:18011])
    //        {
    //            NSMutableString *sendString=[NSMutableString stringWithCapacity:1000];
    //            [sendString appendString:@"非警务健身房"];
    //            NSData *cmdData = [sendString dataUsingEncoding:NSUTF8StringEncoding];
    //
    //            [asyncSocket writeData:cmdData withTimeout:-1 tag:0];
    //        }
    //        NSLog(@"Error: %@", err);
    //    }
}

-(IBAction)haha:(id)sender{
    asyncSocket=nil;
    NSError *err = nil;
    if(![asyncSocket connectToHost:@"192.168.1.105" onPort:18011 error:&err])
    {
        asyncSocket = [[AsyncSocket alloc] initWithDelegate:self];

        [asyncSocket setRunLoopModes:[NSArray arrayWithObject:NSRunLoopCommonModes]];

        if (![self SocketOpen:@"192.168.1.105" port:18011])
        {
            NSMutableString *sendString=[NSMutableString stringWithCapacity:100000];
            [sendString appendString:@"Socket测试成功!!!!"];
            NSData *cmdData = [sendString dataUsingEncoding:NSUTF8StringEncoding];

            [asyncSocket writeData:cmdData withTimeout:-1 tag:0];
        }
        NSLog(@"Error: %@", err);
    }
}
- (void)onSocket:(AsyncSocket *)sock didConnectToHost:(NSString *)host port:(UInt16)port
{
    NSLog(@"onSocket:%p didConnectToHost:%@ port:%hu", sock, host, port);
    [sock readDataWithTimeout:1 tag:0];
}
-(void) onSocket:(AsyncSocket *)sock didReadData:(NSData *)data withTag:(long)tag
{

}
- (void)onSocket:(AsyncSocket *)sock didSecure:(BOOL)flag
{
    NSLog(@"onSocket:%p didSecure:YES", sock);
}
- (void)onSocket:(AsyncSocket *)sock willDisconnectWithError:(NSError *)err
{
    NSLog(@"onSocket:%p willDisconnectWithError:%@", sock, err);
}
- (void)onSocketDidDisconnect:(AsyncSocket *)sock
{
    //断开连接了
    NSLog(@"onSocketDidDisconnect:%p", sock);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
}
- (void)viewDidUnload {
    asyncSocket=nil;
}
//打开
- (NSInteger)SocketOpen:(NSString*)addr port:(NSInteger)port
{
    if (![asyncSocket isConnected])
    {
        [asyncSocket connectToHost:addr onPort:port withTimeout:-1 error:nil];

        NSLog(@"connect to Host:%@ Port:%d",addr,port);
    }
    return 0;
}
erduhaiyan
erduhaiyan 回复kayasole: https://github.com/newOcean/printer完整可运行的打印demo
2 年多之前 回复
kayasole
kayasole 上面代码只能是成功连接打印机,要打印成功还需要发送打印指令吧? 请问实现了吗?
3 年多之前 回复
erduhaiyan
erduhaiyan   2016.03.15 09:03

我发现一个比较方便的
https://github.com/newOcean/printer
完整可运行的ios蓝牙打印demo

wwwang89123
wwwang89123 还是SDK?
一年多之前 回复
Eiseno
Eiseno   2012.12.26 17:33

如果是用打印机打印text文件的话,可以用这个

- (IBAction)printContent:(id)sender {
    UIPrintInteractionController *pic = [UIPrintInteractionController sharedPrintController];
    pic.delegate = self;

    UIPrintInfo *printInfo = [UIPrintInfo printInfo];
    printInfo.outputType = UIPrintInfoOutputGeneral;
    printInfo.jobName = self.documentName;
    pic.printInfo = printInfo;

    UISimpleTextPrintFormatter *textFormatter = [[UISimpleTextPrintFormatter alloc]
                                             initWithText:yourNSStringWithContextOfTextFileHere];
    textFormatter.startPage = 0;
    textFormatter.contentInsets = UIEdgeInsetsMake(72.0, 72.0, 72.0, 72.0); // 1 inch margins
    textFormatter.maximumContentWidth = 6 * 72.0;
    pic.printFormatter = textFormatter;
    [textFormatter release];
    pic.showsPageRange = YES;

    void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) =
    ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
        if (!completed && error) {
            NSLog(@"Printing could not complete because of error: %@", error);
        }
    };
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        [pic presentFromBarButtonItem:sender animated:YES completionHandler:completionHandler];
    } else {
        [pic presentAnimated:YES completionHandler:completionHandler];
    }
}
lwq421336220
lwq421336220 你好,这好像不是我要的,我把问题完善了一下,你帮忙看看。
5 年多之前 回复
g989_1314125
g989_1314125   2012.12.26 17:33

不知道是不是连接的问题,你是用wifi连接还是bluetooth连接的?在IOS5中不支持蓝牙连接打印。

http://support.apple.com/kb/ht3647

看一下这个网站,有列表说明。

lwq421336220
lwq421336220 我把问题完善了一下,你帮忙看看。
5 年多之前 回复
Sueyexin
Sueyexin   2012.12.26 17:37

如果要打印字符串的话是NSString,不过你需要先将字符串打印到屏幕,然后用AirPrint可以打印到打印机。

这是一个单独的进程。

lwq421336220
lwq421336220 我把问题完善了一下,你帮忙看看。
5 年多之前 回复
xiaoxiaoaishang
xiaoxiaoaishang   2012.12.27 10:28

如果你的打印机设置中有AirPrinter,那用UIPrintInteractionController就很简单了

erduhaiyan
erduhaiyan https://github.com/newOcean/printer完整可运行的打印demo
2 年多之前 回复
xiaoxiaoaishang
xiaoxiaoaishang 你仔细看看socket,然后再对照我给的那个资料,应该是可以解决问题的。
5 年多之前 回复
lwq421336220
lwq421336220 你好,我是想用socket进行通讯
5 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
JAVA调用系统打印机打印字符串
package com.mohe.prient; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.print.PageFormat; import java.awt.print.Printable; import java.awt.print.Prin
iOS如何完成蓝牙打印机功能
写在前面:因为哥们 @骑驴追蝴蝶 遇到了打印图片的功能,这个demo 是支持打印图片的,打印图片代码我单独放在文章最后,有需要的哥们可以去试试 之前公司项目里面需要使用到蓝牙打印机这个功能,搞定后特来向兄弟们分享一下经验和坑。 废话不多说,直接上代码 1.需要导入一些库,这些库是当时看的demo上面需要的,因为时间紧,我没有试过是不是每个库都是需要的,还望兄弟们见谅,不过全部加上是没有错的。
iOS蓝牙链接打印机的使用心得
iOS蓝牙连接小票机打印的一些使用心得
iOS 如何连接打印机
问题描述:我想要再ipad程序里面,用代码给打印机发送一段字符串,然后打印。 具体情况是这样的,现在想要用wifi连接到打印机,然后给打印机发送一个字符串去打印。但是问题是不知道如何连接打印机,也不知道如何给打印机发送消息。其中打印机和ipad在同一个局域网下,想用socket通过打印机的ip地址进行传送要打印的内容。 更多解决方法见:http://ask.csdn.net/quest
ios开发实现socket连接局域网打印机打印
ios开发实现socket连接局域网打印机打印,打印机和ios设备在同一局域网
iOS 连接打印机 ESC/POS 指令打印 打印图片二维码
最近公司给商户做的App 允许App把卖出的商品信息通过打印机 打印标签所以了解了一下iOS 和 打印机 之间的交互 (Ps:用的不是UIPrinter 那个扫面打印机 发送信息打印的那个框架)主要功能 打印 .中文. 数字. 二维码1.连接打印机连接打印机可以通过 网线 USB 蓝牙 或者WiFi . 我们用App肯定是通过WiFi或者蓝牙连接至于蓝牙怎么连接 可以 看看前面的文章,本文采用Wi...
app项目实现打印功能。
1.实现打印图片的简单代码:    UIPrintInteractionController *printC = [UIPrintInteractionControllersharedPrintController];     UIPrintInfo *printInfo = [NSClassFromString(@"UIprintInfo") printInfo ];     prin
wifi连接打印机小demo
小demo
iOS蓝牙4.0的打印功能的简单实现
由于前段时间的项目开发需要,做了个蓝牙打印的功能,基于项目开发复杂度和开发时间成本的考虑,最终只实现了蓝牙4.0的打印功能(需要iPhone4s及其以上设备,无需MFI认证)。为了使得代码更加简洁清晰,在此我专门抽了一个蓝牙打印的管理类出来。话不多说,直接上代码。 蓝牙管理对象.h文件代码:/** * * CoreBluetooth框架只针对蓝牙4.0开发 蓝牙2.0开发需要蓝牙设备
Ios 调用打印机2
不想解释了,这是做这么久ios以来最蛋疼的功能,没有之一,国内网站上一直找不到相关的,问群里也问不到,不过最后还是在国外网站上找到了,英文差真实软肋,悲催,先留下几个网站吧   http://stackoverflow.com/questions/9809723/print-uitableview-that-has-content-off-screen 最后用得是 #impo