【问题标题】:Cocoa PDF Getting Page Rotation value issueCocoa PDF获取页面旋转值问题
【发布时间】:2012-01-26 08:29:33
【问题描述】:

这是我第一次在这个论坛上提问。对不起,如果我的英语不对,这不是我的母语。通常我总是在这个论坛或谷歌搜索上找到我的答案。但这一次,我没有找到。

这是我的问题(Mac OS X Lion):

我的 PDF 文件很少。为了进行测试,我使用“预览”旋转一些页面和/或使用 PDFKit([PDFPage setRotation:90])以编程方式旋转一些 PDF 页面。我保存了这个新的 PDF。输出是带有一些旋转页面的 PDF。我以预览或其他方式重新打开,以确保一切正常。这很好,显示是正确的。到目前为止一切顺利。

现在,我打开这个新创建的 PDF,并尝试获取 PDF 页面的旋转值(逐页)。我尝试使用 PDFKIT 方法 [PDFPage rotation] 或使用 CGPDF ... (CGPDFPageGetRotationAngle) 的 Quartz 方法,页面旋转的值总是 0。 NSLog(@"value :%d", 角度)

如何使用 PDFKIT 方法进行复制,只需使用 Apple 的“PDF Annotation Editor”代码。以横向和纵向打开带有某些页面的 PDF。显示将如预期的那样。但现在尝试在'rotation = [page rotation];'行读取值旋转在 transformContextForPage:(PDFPage*)page 方法中,我总是得到 0。当预期值应该是 0 或 90 时,取决于页面。尝试将 Quartz 方法与 CGPDFPageGetRotationAngle 一起使用时出现同样的问题。

我错过了什么吗?这是一个错误吗?还是我对 PDF 页面旋转的理解有误?

谢谢

【问题讨论】:

    标签: cocoa pdf rotation quartz-graphics pdfkit


    【解决方案1】:

    在 PDF 中,您可以通过 2 种方式创建旋转页面:将页面大小设置为 8.5*11 英寸并将旋转页面属性设置为 90,或者简单地将页面大小设置为 11*8.5 英寸。视觉上没有区别。
    Preview 的问题(我假设它背后还有 PDFKit)是当您将旋转设置为 90 时,它不会简单地将 Rotate 属性设置为 90,而是会切换页面宽度和高度并对页面内容应用转换流,以便页面内容显示为旋转。因为 [PDFPage rotation] 和 CGPDFPageGetRotationAngle 返回 Rotate 属性的值,所以在使用 Preview 和 PDFKit 旋转的页面上它们将始终返回 0。

    【讨论】:

    • 没错。在用非 Mac 产品测试旋转后,PDF 中的旋转值现在是正确的。这很奇怪,PDFKit 的 PDFPage 文档在这种情况下具有误导性。因为它没有像提到的那样设置旋转,而只是像你说的那样应用变换。谢谢
    • 似乎在 El Capitan 上这已经改变了,PDFKit 现在只设置了旋转属性...
    猜你喜欢
    • 2011-03-09
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    • 1970-01-01
    • 2012-01-26
    • 2021-10-13
    • 1970-01-01
    • 2022-01-21
    相关资源
    最近更新 更多