使用AirPrint打印锁定的pdf时如何将密码传递给UIPrintInteractionController?

时间:2012-08-20 03:19:40

标签: ios pdf airprint

我想使用AirPrint打印已锁定的pdf在iOS上,我知道密码,我想知道当我使用密码时,是否有办法将密码传递给UIPrintInteractionController打印?因为我不想使用CGPDFDocumentUnlockWithPassword解锁pdf并绘制每一页。

1 个答案:

答案 0 :(得分:0)

我发现在使用AirPrint.once时你没有必要传递密码 解锁pdf使用CGPDFDocumentUnlockWithPassword.You有一个CGPDFDocumentRef,从UIPrintPageRenderer声明一个子类。实现 - (void)drawPageAtIndex:(NSInteger)pageIndex inRect:(CGRect)printableRect在上下文中呈现每个页面。 它可以像这样

- (void)drawPageAtIndex:(NSInteger)pageIndex inRect:(CGRect)printableRect
{
    CGRect pageRect = CGPDFPageGetBoxRect([_item openPage:pageIndex +1], kCGPDFMediaBox);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 1.0,1.0,1.0,1.0);
    CGContextFillRect(context,printableRect);
    CGContextTranslateCTM(context, 0.0, printableRect.size.height);
    CGContextTranslateCTM(context, printableRect.origin.x, printableRect.origin.y);
    CGContextScaleCTM(context, printableRect.size.width/pageRect.size.width, -printableRect.size.height/pageRect.size.height);
    CGContextSaveGState(context);
    CGContextDrawPDFPage(context, [_item openPage:pageIndex + 1]);
    CGContextRestoreGState(context);


} 

并且您不需要设置printingItem或printingItems。 因为你可以通过实现获得页面范围 - (NSInteger)numberOfPages

最后不要忘记将其设置为UIPrintInteractionController。