2011-06-03 2 views
0

J'ai une application MonoTouch qui génère des fichiers PDF localement, puis les imprime sur une imprimante réseau. Pour que cela fonctionne, j'ai tout d'abord ajouté une ressource PDF au projet que je pourrais essayer d'imprimer mais j'ai beaucoup de temps. Quand j'imprime juste HMTL ou une valeur de chaîne tout est bon mais l'impression du PDF m'a perdu. Lors du débogage, il semble que l'application obtienne l'URL appropriée.MonoTouch impression d'un fichier PDF local

Toute aide serait grandement appréciée et mon code est échantillonné ci-dessous:

public void PrintSomePDF() 
    { 
     var printInfo = UIPrintInfo.PrintInfo; 
     printInfo.OutputType = UIPrintInfoOutputType.General; 
     printInfo.JobName = "Test: PDF Print"; 

     string pdfFileName = "printthispdf_01.pdf"; 
     NSUrl url = NSUrl.FromFilename(pdfFileName);   

     var printer = UIPrintInteractionController.SharedPrintController; 
     printer.PrintInfo = printInfo; 
     printer.PrintingItem = url.Path; 
     printer.ShowsPageRange = true; 

     printer.Present (true, (handler, completed, err) => { 
      if (!completed && err != null){ 
       Console.WriteLine ("error"); 
      } 
     }); 
    } 

j'ai pu résoudre le problème avec la façon dont je suis passé dans le NSURL au PrintingItem. Avant de passer dans printer.PrintingItem = url.Path; qui consistait simplement à transmettre une chaîne du chemin et non la forme réelle de NSUrl.

printer.PrintingItem = url; 

Répondre

1

Ce que j'ai toujours préféré faire (et cela dépend beaucoup du dispositif déployé - dans mon cas, il était un serveur que je contrôlais) était juste installer une imprimante PDF et il est aussi facile que l'impression tout autre type de document.

Quelque chose comme BullZip est gratuit et vous permet d'écrire tous les paramètres de l'impression dans un fichier RunOnce.ini (xml) pour avoir une impression en mode silencieux avec des paramètres pour le nom de fichier et ainsi de suite.

De toute évidence, ce n'est pas une bonne solution si vous n'avez pas le contrôle du système sur lequel vous êtes en train de déployer, mais une solution solide et simple si vous le faites.