2010-02-26 5 views
1

J'ai une application Silverlight qui a un DataGrid. J'ai besoin d'imprimer les éléments sélectionnés dans le DataGrid. Cependant, je ne veux pas utiliser un WritableBitmap. Est-il possible pour moi de passer seulement ces articles à un point de service WCF ou une page .aspx et HTML qui rends invite l'utilisateur à imprimer? Si c'est le cas, comment?Silverlight - Impression

Merci,

Répondre

2

Si vous utilisez Silverlight 4, vous pouvez utiliser l'API d'impression, mais je suppose que vous ne poser cette question dans ce cas.

Dans Silverlight 3, je pense que vous devez recourir à une sorte de hack, où le code SL appelle une fonction JavaScript, lui donnant les données sélectionnées dans un format. Cette fonction pourrait ouvrir une nouvelle fenêtre où les données sont ré-affichées dans un format imprimable, puis imprimé.

Je mentionne une nouvelle fenêtre, parce que je suppose que la fenêtre qui héberge le contenu SL a déjà un certain contenu qui est sans rapport avec les données à imprimer.

1

Avant SL4:

  1. créer un service WCF:
    • prend dans un blob XML
    • rend au format PDF (une façon de le faire est d'utiliser FO)
    • stocke dans une certaine zone temporaire avec ID unique
    • renvoie l'ID au client
  2. Créer une page .aspx:
    • prend dans un identifiant d'un fichier PDF retourné par le service WCF
    • flux PDF généré au client (avec Content-type adéquat)
  3. client SL:
    • invoque le service WCF et obtient l'identifiant du fichier PDF généré
    • construit l'URL du fichier PDF généré
    • utilise l'une des astuces JavaScript pour faire apparaître cette URL dans le navigateur (une façon est d'avoir un IFRAME caché et mettre sa source à l'URL)
+0

> rend comme PDF (une façon de faire c'est-à-dire utiliser "FO") qu'est-ce que "FO"? – Lari13