J'ai une chaîne HTML à imprimer avec AirPrint dans mon application iOS. Cependant, la chaîne est personnalisable et l'utilisateur est autorisé à définir la marge/paddings, la taille de police/police, l'orientation etc.Définition des pages à imprimer pour UIPrintPageRenderer/UIPrintInteractionController
Ainsi, parfois la sortie peut être plus de 2 pages où la deuxième page est vide. Là, je veux définir une plage pour les pages à imprimer. En fait, je veux juste imprimer seulement la première page, peu importe ce que la sortie est.
Voici la boîte de dialogue du contrôleur d'interaction d'impression, vous pouvez voir qu'il n'y a pas plage définie et la sortie est plus d'une page:
Et voici mon code:
// create an html output text
let markupText = "<div style='width: 100%; text-align: center;'><div style='display: inline-block; margin-top: 35mm; margin-left: 45mm;'>Hello, printer.</div></div>"
// initialize print formatter
let formatter = UIMarkupTextPrintFormatter(markupText: markupText)
formatter.contentInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
formatter.startPage = 0
// initialize print renderer and set its formatter
let printRenderer = UIPrintPageRenderer()
printRenderer.addPrintFormatter(formatter, startingAtPageAtIndex: 0)
printRenderer.prepareForDrawingPages(NSMakeRange(0, 1))
// initialize print controller to present print dialog
let printController = UIPrintInteractionController.sharedPrintController()
printController.printPageRenderer = printRenderer
printController.presentAnimated(true, completionHandler: nil)
J'étais incapable de trouver assez d'informations sur la définition de la gamme, bien que je pensais que la méthode ferait l'affaire. Des idées sur l'accomplissement de cela?
NumberOfPages propriété est en lecture seule: "ne peut affecter à la valeur: appel renvoie la fonction valeur immuable". Définit showPagesRange sur true, mais rien n'a changé, même résultat. – kubilay
PDF chose était une bonne idée. La méthode drawPageAtIndex de UIPrintPageRenderer a réussi à créer un fichier PDF d'une seule page afin que tout se passe bien après l'obtention de ce PDF en une page. Créé le fichier avec un peu d'aide de https://gist.github.com/nyg/b8cd742250826cb1471f – kubilay
@kubilay 'numberOfPages' est aussi une méthode qui calcule le nombre de pages, mais vous devez créer une sous-classe personnalisée de' UIPrintPageRenderer' pour le contourner. J'utilisais une sous-classe personnalisée jusqu'à ce que je comprenne que la chose PDF était tellement plus facile. Je vais modifier pour reconnaître que cela ne fonctionne que dans les sous-classes personnalisées. – cbay