7

私はiPhone開発に不慣れで、UIViewを印刷する必要があります。だから私はUIViewをPDFに変換しました、そしてそれは私にとってはうまくいきます..しかし私はそれが印刷されるようにこのPDFをプリンターに渡す方法がわかりません、これを解決するのを助けることができます

前もって感謝します

私のコードは:

- (void)createPDFfromUIView:(UIView*)aView saveToDocumentsWithFileName:(NSString*)aFilename
{
    NSMutableData *pdfData = [NSMutableData data];
    UIGraphicsBeginPDFContextToData(pdfData, aView.bounds, nil);
    UIGraphicsBeginPDFPage();
    CGContextRef pdfContext = UIGraphicsGetCurrentContext();
    [aView.layer renderInContext:pdfContext];
    UIGraphicsEndPDFContext();
       NSArray* documentDirectories = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask,YES);

    NSString* documentDirectory = [documentDirectories objectAtIndex:0];
    NSString* documentDirectoryFilename = [documentDirectory stringByAppendingPathComponent:aFilename];
    [pdfData writeToFile:documentDirectoryFilename atomically:YES];
    NSLog(@"documentDirectoryFileName: %@",documentDirectoryFilename);
}

-(void)getPDF{
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
     NSString *documentsPath = [paths objectAtIndex:0]; 
     NSString *filePath = [documentsPath stringByAppendingPathComponent:@"myPdf"];
     NSLog(@"filePath: %@",filePath);

     NSData *pngData = [NSData dataWithContentsOfFile:filePath];
    [displayPDFView loadData:pngData MIMEType:@"application/pdf" textEncodingName:@"utf-8" baseURL:nil];
    [self.view setBackgroundColor:[UIColor colorWithWhite:0.5 alpha:0.0]];
    displayPDFView.hidden = NO;

}

//プリンタコード

NSString *path = [[NSBundle mainBundle] pathForResource:@"demo" ofType:@"png"];
    NSData *dataFromPath = [NSData dataWithContentsOfFile:path];

    UIPrintInteractionController *printController = [UIPrintInteractionController sharedPrintController];

    if(printController && [UIPrintInteractionController canPrintData:dataFromPath]) {

        printController.delegate = self;

        UIPrintInfo *printInfo = [UIPrintInfo printInfo];
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = [path lastPathComponent];
        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        printController.printInfo = printInfo;
        printController.showsPageRange = YES;
        printController.printingItem = dataFromPath;

        void (^completionHandler)(UIPrintInteractionController *, BOOL, NSError *) = ^(UIPrintInteractionController *printController, BOOL completed, NSError *error) {
            if (!completed && error) {
                NSLog(@"FAILED! due to error in domain %@ with error code %u", error.domain, error.code);
            }
        };

        [printController presentFromRect:btnPrint.frame inView:btnPrint.superview
                                animated:YES completionHandler:completionHandler];
    } 
4

2 に答える 2

9

このコードでPDFを印刷できます....

 #if (READER_ENABLE_PRINT == TRUE) // Option

Class printInteractionController = NSClassFromString(@"UIPrintInteractionController");

if ((printInteractionController != nil) && [printInteractionController isPrintingAvailable])
{
    NSURL *fileURL = document.fileURL; // Document file URL

    printInteraction = [printInteractionController sharedPrintController];

    if ([printInteractionController canPrintURL:fileURL] == YES)
    {
        UIPrintInfo *printInfo = [NSClassFromString(@"UIPrintInfo") printInfo];

        printInfo.duplex = UIPrintInfoDuplexLongEdge;
        printInfo.outputType = UIPrintInfoOutputGeneral;
        printInfo.jobName = document.fileName;

        printInteraction.printInfo = printInfo;
        printInteraction.printingItem = fileURL;
        printInteraction.showsPageRange = YES;

        [printInteraction presentFromRect:button.bounds inView:button animated:YES completionHandler:
            ^(UIPrintInteractionController *pic, BOOL completed, NSError *error)
            {
                #ifdef DEBUG
                    if ((completed == NO) && (error != nil)) NSLog(@"%s %@", __FUNCTION__, error);
                #endif
            }
        ];
    }
}

  #endif //
于 2012-04-11T10:51:28.473 に答える