2

次のコードを使用して、PDF ファイルを Google クラウド プリントに印刷しようとしています。ドキュメントを実際に印刷する代わりに、ファイルの場所とファイル名を示す文字列を印刷するだけです。実際のドキュメントを印刷したいと思います。

クラウド プリント /search の呼び出しから正しいプリンターを見つけているように見えるため、このメソッドに渡されるデータは有効であると想定できます。

更新: コードは元の形式から更新され、いくつかのマルチパート フォーム データが含まれます。

              NSString *currentPDFFileName = [[NSBundle mainBundle] pathForResource:@"TestPDF" ofType:@"pdf"];
    NSData *pdfData = [NSData dataWithContentsOfFile:currentPDFFileName];
    NSData *validPDF = [[NSString stringWithString:@"%PDF"] dataUsingEncoding: NSASCIIStringEncoding];
    if (!(pdfData && [[pdfData subdataWithRange:NSMakeRange(0, 4)] isEqualToData:validPDF])) 
    {
        NSLog (@"Not valid");
    }

    NSLog (@"%@", currentPDFFileName);
    NSLog (@"%@", [currentPDFFileName lastPathComponent]);

    //create the body
    NSMutableData *body = [NSMutableData data];

    //create the POST vars
    NSString *thePrinter = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"printerid\"\r\n\r\n%@", printerID];
    NSString *pdf = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"content\"; filename=\"%@\"\r\n", [currentPDFFileName lastPathComponent]];
    NSString *theContent = [NSString stringWithFormat:@"Content-Disposition: form-data; name=\"contentType\"\r\n\r\n%@", contentType];

    [body appendData:[[NSString stringWithFormat:@"--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[thePrinter dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[pdf dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[theContent dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:[@"Content-Type: application/pdf\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
    [body appendData:pdfData];
    [body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", @"----foo"] dataUsingEncoding:NSUTF8StringEncoding]];

    NSMutableURLRequest *pdfRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://www.google.com/cloudprint/submit"]];
    [pdfRequest setValue:@"multipart/form-data; boundary=----foo" forHTTPHeaderField:@"Content-type"];
    [pdfRequest setHTTPMethod:@"POST"];
    [pdfRequest setHTTPBody:body];


    [self.authenticate authorizeRequest:pdfRequest completionHandler:^(NSError *error) {
        NSString *output = nil;
        if(error) {
            output = [error description];
        } else {
            NSURLResponse *response = nil;
            NSData *data = [NSURLConnection sendSynchronousRequest:pdfRequest
                                                 returningResponse:&response
                                                             error:&error];
            if(data) {
                output = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            } else {
                output = [error description];
            }
        }

        NSLog(@"%@", output);
    }];
4

0 に答える 0