1

我知道用于CGPDFDocumentUnlockWithPassword解锁 pdf,但它返回 a CGPDFDocumentRef,如果我想使用 AirPrint 打印它,它应该是 aNSData或 url,但我不知道如何将 a 转换CGPDFDocumentRefNSData对象或将其另存为文件 。有没有人有解决这个案子的想法?

4

2 回答 2

0

只需将源 pdf 的每一页打印到新创建CGPDFContext的文件中并将生成的 pdf 保存到单独的文件中即可。原则上,它应该如下所示:

// create PDFContext
NSURL* dstPath = [NSURL fileURLWithPath:pathInCachesFolder]
CGRect pageRect = CGRectMake(0,0,1024,1024); // example, use real page size of src document here
CGContextRef pdfContext = CGPDFContextCreateWithURL(dstPath, &pageRect, nil);

// use for loop here to repeat following stuff for each pdf page from the src pdf
CGPDFContextBeginPage(pdfContext, NULL);
CGContextDrawPDFPage(pdfContext, sourcePDFpageRef);
CGPDFContextEndPage(pdfContext);

// close pdfContext, saves dst file
CGPDFContextClose(pdfContext);
CGContextRelease (pdfContext);

这段代码只是将一个页面从源 pdf 打印到新创建的 pdf 并将 pdf 保存到 dst 路径。当然,您需要为源文档中的每一页重复绘制部分。之后,您应该能够通过 AirPrint 毫无问题地打印 pdf。

于 2012-08-16T08:04:33.367 回答
-2

我已经解决了这个问题。你可以在这里获得信息:

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

于 2012-09-07T08:57:41.317 回答