我目前正试图通过AirPrint从iPad上打印PDF。当我直接以A4尺寸和肖像打印PDF时,我做得很好。
但是,现在我希望打印的PDF格式为A5尺寸,并且是纵向的,就像A4纸的一半,我现在无法制作。任何人都对此有所了解,要么我应该调整PDF文件的大小(不是更好),要么还有其他方法可以做到这一点
我正在使用{{ form.team|bootstrap }}
及其委托进行打印,而来自加载PDF的webView的UIPrintInteractionController
来源。
PageRenderer:
viewPrintFormatter
然后将其另存为物理文件:
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)
答案 0 :(得分:3)
您可以通过设置图形上下文调用的第二个参数来更改PDF的“纸张大小”。
UIGraphicsBeginPDFContextToData(data, CGRect(x: 0, y: 0, width: 792, height: 612), nil)
边界
一个矩形,指定PDF页面的默认大小和位置。 (此值用作每个新页面的默认媒体框。)矩形的原点通常应为(0,0)。指定空矩形(CGRectZero)将默认页面大小设置为8.5 x 11英寸(612 x 792点)。