在iOS中,使用CGPDFDocumentRef,为什么我的PDF显示的是大边距而不是整个页面?
可能重复:在iOS中,使用CGPDFDocumentRef,为什么我的PDF显示的是大边距而不是整个页面?,ios,xcode,pdf,margins,cgpdfdocument,Ios,Xcode,Pdf,Margins,Cgpdfdocument,可能重复: 我正在毫无问题地展示一个PDF,但是,在我编译应用程序的时候,原始PDF没有显示大的边距。我的代码: 在H文件中: @interface viewPDF : UIView { CGPDFDocumentRef document; } 在M文件中: - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:(CGRect)frame]; if (self) { self.background
我正在毫无问题地展示一个PDF,但是,在我编译应用程序的时候,原始PDF没有显示大的边距。我的代码: 在H文件中:
@interface viewPDF : UIView
{
CGPDFDocumentRef document;
}
在M文件中:
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:(CGRect)frame];
if (self) {
self.backgroundColor = [UIColor clearColor];
NSString *pathToPdfDoc = [[NSBundle mainBundle] pathForResource:@"myPDF" ofType:@"pdf"];
NSURL *pdfUrl = [NSURL fileURLWithPath:pathToPdfDoc];
document = CGPDFDocumentCreateWithURL((__bridge CFURLRef)pdfUrl);
currentPage = 1;
}
return self;
}
-(void)drawRect:(CGRect)inRect{
if(document)
{
CGPDFPageRef page = CGPDFDocumentGetPage(document, currentPage);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSaveGState(ctx);
CGContextTranslateCTM(ctx, 0.0, [self bounds].size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(page, kCGPDFCropBox, [self bounds], 0, true));
CGContextDrawPDFPage(ctx, page);
CGContextRestoreGState(ctx);
}
任何优秀的PDF开发人员都知道如何避免页边距吗?PDF页面由两个框定义:定义物理页面大小的媒体框和定义页面在媒体框内可见区域的裁剪框。您需要做的是在绘制PDF页面之前设置与裁剪框匹配的裁剪路径。然后,当您绘制页面时,裁剪框外的所有内容都将被剪裁,您将看到与在任何查看器中看到的页面相同的页面。我的代码要少得多,因此,我希望得到更简单的答案。可能会问:这些边距是由什么引起的?
CGPDFPageGetBoxRect()
是否返回一个与您正在绘制的矩形相似的矩形,或者它们有很大的不同?这可能是一个规模问题或综合规模/纵横比问题。哇!正是我要找的!谢谢