2013-07-22 11 views
6

Per un semplice sistema di ritiro è necessario definire in qualche modo un documento modello con una semplice formattazione, riempirlo con i dati e stamparlo su una stampante Windows standard. Deve funzionare su un servizio di Windows. Quale tecnologia dovrei usare al meglio?Stampa utilizzando il modello

EDIT:

Ho provato ad utilizzare PDF-Forms. Ho definito un paio di caselle di testo e le ho riempite con iTextSharp. Ha funzionato fino al punto in cui ho dovuto stamparli, il che è davvero difficile, dato che devi essenzialmente utilizzare direttamente l'eseguibile del lettore.

Un'alternativa che sembra essere meglio integrata in .NET sembra essere l'uso di XPS. XPS fornisce una funzionalità simile?

+3

La stampa da un servizio è davvero una cattiva idea. I driver della stampante sono stati creati per le app desktop. Ti diranno che la cartuccia del toner è semivuota e dove ordinare un altro. Se ciò accade in un servizio allora non verrà stampato e non hai idea del perché. Un modello può essere qualsiasi cosa, una bitmap lo farà.Un sacco di programmi di generazione di report con funzionalità di riempimento in bianco, è necessario andare a fare la spesa da soli. –

+0

Scrivo autisti di stampanti per vivere e sono d'accordo con Hans Passant. La stampa da un servizio Windows non è quasi mai una buona idea. – Jon

risposta

-1

Abbiamo deciso di utilizzare il formato della serie EPSON TM-Intelligent.

1

Ci sono vari modi;

Creare un file di testo e cercare e sostituire parole chiave con valori appropriati. Salva/stampa questo.

Creare un file html e cercare e sostituire parole chiave con valori appropriati. Salva/stampa questo.

Creare un file PDF con campi predefiniti e sostituirli con valori appropriati. Salva/stampa questo.

E altro ancora ...

3

creare il proprio modello ricezione utilizzando HTML o solo testo.

Esempio utilizzando HTML:

HTML

<html> 
    <head> 
    <title>Receipt</title> 
    </head> 
    <body> 
    <div>The price: <%Price%></div> 
    <div>The time: <%Time%></div> 
    <div>Payment Method: <%PaymentMethod%></div> 
    </body> 
</html> 

C#

static void Main(string[] args) 
    { 
     CreateReceipt("€1.50", "09.30", "Cash"); 
    } 

    private static void CreateReceipt(string price, string time, string paymentMethod) 
    { 
     string bodyFile; 
     string template = System.IO.Directory.GetCurrentDirectory() + "\\template.html"; 
     using (StreamReader reader = new StreamReader(template)) 
     { 
      bodyFile = reader.ReadToEnd(); 
      bodyFile = bodyFile.Replace("<%Price%>", price); 
      bodyFile = bodyFile.Replace("<%Time%>", time); 
      bodyFile = bodyFile.Replace("<%PaymentMethod%>", paymentMethod); 
     } 
     FileStream fs = File.OpenWrite(System.IO.Directory.GetCurrentDirectory() + "\\receipt.html"); 
     StreamWriter writer = new StreamWriter(fs, Encoding.UTF8); 
     writer.Write(bodyFile); 
     writer.Close(); 
    } 
} 
+0

Beh, non voglio davvero scrivere quella roba da solo. Inoltre come potrei stampare questo dopo? C'è un modo per usare qualcosa come Razor e poi stamparlo? – Philippe

+0

Vedi modifica. Il metodo ora utilizzerà il template.html per creare un nuovo file chiamato receipt.html con qualunque parametro gli venga passato. Non ho familiarità con Razor. –

1

Si potrebbe provare ActiveReports

Link to ComponentOne

Non è gratis .. ma funziona per la stampa roba come si desidera. Crea semplicemente modelli e inseriscili nel tuo codice.

Problemi correlati