- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 iOS 10 下使用 CGPDF 保存一个 PDF 文件。为此,我加载一个现有的 PDF 页面,并将其写入一个带有上下文的新文件。这样做时,旋转信息会丢失,生成的 PDF 文件会将所有页面重新排列为 0°。
let writeContext: CGContext = CGContext(finalPDFURL, mediaBox: nil, nil)!
// Loop through all pages
let page: CGPDFPage = ...
var mediaBox = page.getBoxRect(.mediaBox)
writeContext.beginPage(mediaBox: &mediaBox)
writeContext.drawPDFPage(page)
writeContext.endPage()
// Loop finished
writeContext.closePDF()
然后我想出了这段代码,它可以很好地处理旋转,但似乎在绘制内容时有轻微的偏移。将它与具有文本或任何其他接近边距的 PDF 一起使用会导致内容被截断。稍后还尝试在 pageInfo dict 上设置 x、y 等,但我想我在这里误解了一些东西,请参见下面的第二个问题。
let page: CGPDFPage = ...
// Set the rotation
var pageDict = [String: Int32]()
pageDict["Rotate"] = CGFloat.init(page.rotationAngle)
writeContext.beginPDFPage(pageDict as CFDictionary?)
writeContext.drawPDFPage(page)
writeContext.endPDFPage()
所以我的问题,
1) 如何使用第一种方法但支持旋转?还是第二个,但没有裁剪内容?
2) 我在哪里可以找到该方法所有可用 pageInfo 键值对的完整列表? https://developer.apple.com/reference/coregraphics/cgcontext/1456578-beginpdfpage
谢谢!
最佳答案
问题很旧,但希望以下答案对将来的人有用。它将保留原始PDF页面的旋转信息
- How to use the first approach but with rotation support?
let writeContext: CGContext = CGContext(finalPDFURL, mediaBox: nil, nil)!
// Loop through all pages
let page: CGPDFPage = ...
var mediaBox = page.getBoxRect(.mediaBox)
writeContext.beginPage(mediaBox: &mediaBox)
let m = page.getDrawingTransform(.mediaBox, rect: mediaBox, rotate: 0, preserveAspectRatio: true)
// Following 3 lines makes the rotations so that the page look in the right direction
writeContext.translateBy(x: 0.0, y: mediaBox.size.height)
writeContext.scaleBy(x: 1, y: -1)
writeContext.concatenate(m)
writeContext.drawPDFPage(page)
writeContext.endPage()
// Loop finished
writeContext.closePDF()
关于ios - 具有旋转支持的 CGPDF drawPDFPage,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41451900/
我在 iOS 10 下使用 CGPDF 保存一个 PDF 文件。为此,我加载一个现有的 PDF 页面,并将其写入一个带有上下文的新文件。这样做时,旋转信息会丢失,生成的 PDF 文件会将所有页面重新排
这是堆栈 System.ExecutionEngineException:在使用 --aot-only 运行时尝试 JIT 编译方法“(包装器托管到 native )MonoTouch.CoreGra
我是一名优秀的程序员,十分优秀!