0
我目前正在尝试通过AirPrint从iPad打印PDF。当我直接打印PDF时,我用A4尺寸和肖像直接打印了PDF。横向打印A5尺寸的PDF
但是,现在我希望将PDF打印为A5尺寸并且是纵向的,就像我现在无法制作的A4纸的一半大小一样。任何人都有这个想法,或者我应该调整PDF文件(不是首选)或有其他方式来做到这一点
即时通讯使用UIPrintInteractionController
和它的代表打印,而源是从viewPrintFormatter
来自webView加载PDF。
PageRenderer:
let fmt = webView.viewPrintFormatter()
// 2. Assign print formatter to UIPrintPageRenderer
let render = UIPrintPageRenderer()
render.addPrintFormatter(fmt, startingAtPageAtIndex: 0)
// 3. Assign paperRect and printableRect
let page = CGRect(x: 0, y: 0, width:595.2, height: 841.8) // A4, 72 dpi
let printable = CGRectInset(page, 0, 0)
render.setValue(NSValue(CGRect: page), forKey: "paperRect")
render.setValue(NSValue(CGRect: printable), forKey: "printableRect")
// 4. Create PDF context and draw
let pdfData = NSMutableData()
UIGraphicsBeginPDFContextToData(pdfData, CGRectZero, nil)
for i in 1...render.numberOfPages() {
UIGraphicsBeginPDFPage();
let bounds = UIGraphicsGetPDFContextBounds()
render.drawPageAtIndex(i - 1, inRect: bounds)
}
UIGraphicsEndPDFContext();
然后将其保存为物理文件:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let url = NSURL(fileURLWithPath: "\(documentsPath)/file.pdf")
pdfData.writeToFile("\(documentsPath)/file.pdf", atomically: true)
最后打印:
if UIPrintInteractionController.canPrintURL(url) {
let printInfo = UIPrintInfo(dictionary: nil)
printInfo.jobName = url.lastPathComponent!
printInfo.outputType = .Grayscale
printInfo.orientation = .Landscape
let printController = UIPrintInteractionController.sharedPrintController()
printController.printInfo = printInfo
printController.showsPaperSelectionForLoadedPapers = true
printController.showsNumberOfCopies = true
printController.delegate = self
printController.printingItem = url
printController.presentAnimated(true, completionHandler: nil)
}
如果您向我们展示一些代码,以便我们可以看到您是如何做到这一点的,那么您可能会收到有用的评论。但是总的来说,我认为UIPrintPageRenderer会执行这个技巧,因为您可以定义如何输出内容(这意味着您可以在将您的传入PDF文件放在打印页面上时对其进行缩放)。 –
@DavidvanDriessche我已经添加了代码。对于页面渲染器,即使将其设置为A5尺寸,仍然会以较小尺寸的A4纸垂直打印。但我希望它在A5或A4的一半水平。 – Lee
或者你有任何关于设置的建议?因为即时将它设置为A4尺寸,所以当它保存为PDF时,它看起来更好。 – Lee