Iphone 在pdf的整个屏幕上呈现pdf时出现问题

Iphone 在pdf的整个屏幕上呈现pdf时出现问题,iphone,objective-c,ipad,Iphone,Objective C,Ipad,大家好,我尝试了很多方法来根据pdf书的大小打印pdf。我还搜索了很多链接和代码,比如apple codes、github和许多类似的网站,但没有用。这个问题是许多问题和答案的重复,但我仍然没有得到确切的结果。我的代码如下所示 (void)drawLayer:(CALayer*)层inContext:(CGContextRef)ctx { if(UIInterfaceOrientationSportRait([self interfaceOrientation])){ layer.backgr

大家好,我尝试了很多方法来根据pdf书的大小打印pdf。我还搜索了很多链接和代码,比如apple codes、github和许多类似的网站,但没有用。这个问题是许多问题和答案的重复,但我仍然没有得到确切的结果。我的代码如下所示

  • (void)drawLayer:(CALayer*)层inContext:(CGContextRef)ctx {
    if(UIInterfaceOrientationSportRait([self interfaceOrientation])){ layer.backgroundColor=[UIColor blackColor]; myPageRef=CGPDFDocumentGetPage(myDocumentRef,c)

    CGSize pageSize=[kbDataSource pageSize];
    GLogInfo(@“我们在绘图层中得到的页面大小是%@”,NSStringFromCGSize(pageSize));
    //CGContextSaveGState(ctx);
    CGSize aspectFitSize=[self-getPageFitSizeOfSize:pageSize inSize:CGSizeMake(self.view.bounds.size.width,self.view.bounds.size.height-u顶部_品牌化_u条高)];
    CGContextSetRGBFillColor(ctx,1.0,1.0,1.0,1.0);
    CGContextFillRect(ctx,cgcontextgetclipboondingbox(ctx));
    GLogDebug(@“图像的纵横比尺寸为%@”,NSStringFromCGSize(纵横比尺寸));
    NSLog(@“层边界为:%@%@”、NSStringFromCGSize(layer.bounds.size)、NSStringFromCGPoint(layer.bounds.origin));
    NSLog(@“本书的页面大小为:%@”,NSStringFromCGSize(页面大小));
    CGFloat aspectRatio=pageSize.width/pageSize.height;
    CGRect cropBox=CGPDFPageGetBoxRect(myPageRef,kCGPDFCropBox);
    CGRect targetRect=layer.bounds;
    CGFloat xScale=targetect.size.width/cropBox.size.width;
    CGYScale=(targetect.size.height-41)/cropBox.size.height;
    CGFloat scaleToApply=(xScale
    }

我粘贴了我在drawlayer中尝试的所有代码。我给出了许多随机数以适应整个页面,最后我只得到了八本书(PDF)

我的目标是打印所有覆盖整个ipad屏幕的pdf文件。 我的结果是只得到了几张pdf。有谁能告诉我发生这种情况的确切原因,并告诉我将pdf打印到整个ipad屏幕上的确切代码吗


谢谢大家。

PDF文件中的页面没有标准大小。由于您正在计算比例以保持正确的纵横比,因此并非所有PDF文件都会占据整个屏幕

根据上面的代码,您可以通过更改

CGContextConcatCTM(ctx, CGAffineTransformMakeScale(scaleToApply, scaleToApply));


不过,这会破坏纵横比。

为什么不直接使用UIDocumentInteractionController来显示PDF?这比按您的方式呈现PDF要容易得多?我在几个实例上使用UIDocumentInteractionController来预览PDF、word文档、powerpoints等

看看


这可能会提供您所需的内容(用PDF填充整个屏幕)。它还允许您打印文档,并在需要时在另一个应用程序中打开它…

在iPhone/iPad中阅读PDF有一种简单的方法:1.使用一个UIwebView(名称:pdfView)。2.为其提供Iboutlet连接并将其委托给文件所有者3.在Viewdidload中

[self.pdfView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@“pdf”类型的“ObjC]”


4.ObjC.pdf应该在resource文件夹中。现在,要将不同大小的pdf页面适合iPad屏幕,只需打开相应的.xib文件,然后转到UIwebView的inspector,然后是web视图属性,然后在那里打勾标记缩放页面以适应选项。

嗨,Altealice,我尝试了上面的行什么您已经提到,但这对我的解决方案没有任何帮助。我发布了我的新代码。同样的问题不适用于所有PDF。有些渲染效果非常好,有些页面无法渲染整个屏幕。修复“不适用于所有PDF”是不可能的在互联网上.PDF文件的变化太多,无法理解。你必须进一步调查并提供更多有意义的信息。你能发布更多的细节和示例吗。谢谢Geoff Baum。它工作正常,但如果我使用UIDocumentInteractionController,我的应用程序的功能必须更改。那么你能告诉我如何渲染吗使用drawLayer。对不起,我不知道如何使用drawLayer。我想我会抛出一个替代方案。。。
CGContextConcatCTM(ctx, CGAffineTransformMakeScale(scaleToApply, scaleToApply));
CGContextConcatCTM(ctx, CGAffineTransformMakeScale(xScale, yScale));