在iPad上使用PDF

4

有人尝试在iPad应用程序中使用CGPDF函数来处理PDF文件吗?我已经在iPhone上使用过这个方法并且非常成功,但是当我在iPad上使用相同的代码时,页面会缩小。经过多次尝试,我将比例设置如下:

CGContextScaleCTM(context,1.85, -1.80);

这次它完美地适配了屏幕,但那只是试错,为什么它不能像iPhone一样适配屏幕,我已经正确设置了视图大小。

如果有任何线索,请告诉我。

以下是我的drawRect方法,我在其中绘制PDF页面。

void drawRect:(CGRect)rect{

UIGraphicsBeginPDFPage();
CGContextRef context = UIGraphicsGetCurrentContext();
CGPDFPageRef page = CGPDFDocumentGetPage(pdf, pageNumber);
CGContextSaveGState(context);
CGContextTranslateCTM(context, 1.0, self.frame.size.height);
CGContextScaleCTM(context,1.0, -1.0);   
CGContextDrawPDFPage(context, page);
CGContextRestoreGState(context);

}

alt text http://www.freeimagehosting.net/uploads/6b8bb69bb9.png

感谢


为什么不直接使用UIWebView? - kennytm
你的代码扩展不均匀,这是不好的。 - David Dunham
@KennyTM:UIWebView 提供了上下导航,但是我想要像书一样左右导航,不管怎样,davids 的解决方案完美地解决了这个问题。 - RVN
2个回答

8

您需要做类似以下的事情

CGRect  box = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
CGFloat scale = bounds.size.width / box.size.width;
if (bounds.size.height / box.size.height < scale)
    scale = bounds.size.height / box.size.height;

适应PDF的大小。


谢谢David,它确实起作用了!现在它完美地适合了,但是我面临另一个问题,我在滚动视图中拥有我的PDF页面视图,以便我可以缩放PDF页面,但是当我在滚动视图中放大时,PDF页面视图只是变大,PDF中的文本失去了清晰度。有什么办法可以克服这个问题吗?我尝试在视图上调用setNeedsDisplay方法,但出现了混乱。谢谢 - RVN
如果它能工作,就赞同一下答案吧,这样更容易找到它。你需要做一些炫酷的东西。基本上,默认行为是扩大以100%比例绘制的像素。所以你需要在新的比例下绘制它们,并将滚动条重置为100%,这样它们就会无缩放地绘制出来。 - David Dunham

0
如果您启用了导航栏,它将在两侧留下约10像素的空白。只有在整个区域(768*1004)上绘制时,它才会适应屏幕。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接