iOS上使用Quartz的PDF Annots

时间:2011-03-01 15:49:04

标签: ipad ios pdf

嗯,花了几天时间试图在我的iPad应用程序上获取PDF注释。 我正在使用以下代码来获取注释,是的!有用 :) 但是rect值与IOS rect值完全不同。 我无法弄清楚如何将UIButton放置在注释应该是的位置。 例如,我在pdf文件的左上角有一个注释。

My / Annots / Rect值是,1208.93,2266.28,1232.93,2290.28(WHAT ?!)

如何将PDF / Annots / Rect值转换为iOS x和y坐标?

CGPDFPageRef page = CGPDFDocumentGetPage(doc, i+1);

CGPDFDictionaryRef pageDictionary = CGPDFPageGetDictionary(page);

CGPDFArrayRef outputArray;
if(!CGPDFDictionaryGetArray(pageDictionary, "Annots", &outputArray)) {
    return;
.... .... ....}

2 个答案:

答案 0 :(得分:1)

我认为这些坐标位于PDF的“默认用户坐标空间”中。您需要应用将它们发送到屏幕坐标的转换。您可以使用CGPDFPageGetDrawingTransform进行此类转换。确保您使用相同的转换来绘制页面和注释。

答案 1 :(得分:0)

我不确定这是否是问题,但Quartz 2D坐标系从左下角开始。

有关详细信息,请参阅Quartz 2D Programming Guide的Coordinate Systems

聚苯乙烯。如果你使用它,我想看到注释的结果代码。

编辑:

刚刚找到这段代码(未经测试):

// flip context so page is right way up
CGContextTranslateCTM(currentContext, 0, paperSize.size.height);
CGContextScaleCTM(currentContext, 1.0, -1.0); 

Source