J'essaie actuellement d'imprimer un PDF à partir de mon iPad via AirPrint. Je l'ai bien quand j'imprime le PDF directement, en format A4 et portrait. Cependant, maintenant je veux que le PDF imprimé soit au format A5 et soit en format portrait, comme la moitié de la taille du papier A4, ce que je ne peux pas faire maintenant. Quelqu'un at-il idée à ce sujet, que ce soit je devrais redimensionne le fichier PDF (pas préférable) ou il y a un autre moyen de faire queImprimer PDF au format A5 dans le paysage
Im en utilisant UIPrintInteractionController
et délégué de à imprimer, tandis que la source est de viewPrintFormatter
de webView qui chargent les 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();
Enregistrez ensuite comme fichier physique:
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
let url = NSURL(fileURLWithPath: "\(documentsPath)/file.pdf")
pdfData.writeToFile("\(documentsPath)/file.pdf", atomically: true)
Et enfin imprimer:
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)
}
Si vous souhaitez nous montrer du code afin que nous puissions voir comment vous faites cela, vous pourriez obtenir des commentaires utiles à ce sujet. Mais en général je pense que UIPrintPageRenderer ferait l'affaire car vous pouvez définir comment le contenu serait sorti (ce qui signifierait que vous pouvez mettre à l'échelle votre fichier PDF entrant pendant que vous le placez sur la page imprimée). –
@DavidvanDriessche J'avais ajouté le code. Et pour le rendu de page, même si je le mets au format A5, il l'imprime toujours verticalement dans du papier A4 de plus petite taille. Mais je veux que ce soit dans A5 ou la moitié de la page de A4 horizontalement. – Lee
Ou avez-vous des suggestions sur le réglage? parce que je le mets en format A4 alors quand il enregistre au format PDF, il semble plus agréable. – Lee