Stampa Barcode

lunedì 24 settembre 2007 - 11.12

franksnet Profilo | Newbie

Salve,

ho un problema con la quale combatto invano da giorni ... devo stampare dei codici a barre (formato EAN 13) e volevo farlo evitando possibilmente di acquistare librerie esterne ...

Ho trovato quindi un font di libero utilizzo ( FF EAN ) che ho installato, mando in stampa passandogli il valore del codice a barre codificato e tutto a posto, in teoria ...

In pratica no, perchè io visualizzo correttamente il codice a barre se faccio l'anteprima a video del codice a barre, ma se lo mando in stampa non stampa nulla! Proprio non parte la stampa, perlomeno se faccio tramite PrintDocument ... se invece provo a usare il Font in un report con Microsoft Reporting Service 2005 la stampa parte, magari fa mezza pagina o anche meno, e si blocca ... sputando fuori il foglio mezzo bianco.

Provato su diverse stampanti, anche se tutte epson a getto d'inchiostro ... come posso risolvere? Ho letto frugando su vari siti web che dovrei generarla come immagine per evitare rogne, ma non ho trovato documentazione ...

Spero qualcuno abbia la soluzione magica, sto impazzendo :(

Cteniza Profilo | Guru

La parolina magica è codeplex, un sito di software open source sponsorizzato da microsoft.
http://www.codeplex.com/BarcodeRender

Xnetus Profilo | Junior Member

Scusami,
ma vorresti creare una procedura che ti converte il codice a barra?


http://blogs.dotnethell.it/Xnetus/

franksnet Profilo | Newbie

Anzitutto grazie a entrambi :)

Ho scaricato Barcode Render che sembra sulla carta essere perfetto per ciò che mi serve, ma dalla documentazione non è che sia riuscito a metterlo in opera per lo sguardo che ho potuto dare ora ... sarà che le classi non le ho ancora digerite bene ...

Aggiungo il riferimento alla dll, importo il namespace, e poi provo con:

Dim CodiceBarre As New Zen.Barcode.CodeEan13BarcodeDraw()
CodiceBarre.Draw("8000000000019", 100, 100)

ma mi dice:

Argomento non specificato per il parametro "checksum" di "Public Sub New(checksum As Zen.Barcode.CodeEan13Checksum)

Quindi lui si aspetta il checksum, ma non ho capito come passarglielo...

Scusami XNetus, non ho capito la domanda ... in che senso che mi converte il codice a barre?!

StefanoLep Profilo | Senior Member

Ciao, per quello che so io la 13a cifra è calcolata, non è che vuole solo 12 cifre?

Solo chi fa sbaglia :-)

franksnet Profilo | Newbie

Dalle poche prove che ho potuto fare sinora il codice si aspetta 12 cifre, e il Check-Digit a parte ... ma quello non è un problema, visto che riesco a calcolarlo indipendentemente da Barcode Render, quindi se vuole 13 cifre gliene passo 13, se vuole il barcode a 12 cifre e il Check-Digit a parte glielo passo a parte!

E' che proprio è un parametro da passare quando istanzi la classe, ma non ho afferrato come lo vuole ...

Cteniza Profilo | Guru

Prova a guardare il tipo del checksum, potrebbe volere il la somma e non il checkdigit

Xnetus Profilo | Junior Member

Secondo me vuole tutte le cifre, perché oltre alle 12 cifre vuole la 13a per confrontarla (che eventualmente calcola).


http://blogs.dotnethell.it/Xnetus/

franksnet Profilo | Newbie

Mi son spiegato male ... il problema sta proprio nel codice che scrivo io per istanziare il Barcode Framework ...

Dim CodiceBarre As New Zen.Barcode.CodeEan13BarcodeDraw()
CodiceBarre.Draw("8000000000019", 100, 100)

dovrebbe in realtà essere


Dim CodiceBarre As New Zen.Barcode.CodeEan13BarcodeDraw(checksum)
CodiceBarre.Draw("8000000000019", 100, 100)

dove checksum è un parametro atteso dal framework! Solo che siccome non se lo aspetta in formato stringa nè int, non posso semplicemente mettergli ad esempio 1 o "1" perchè mi da errore! Spero di esser riuscito a spiegare il problema!

Se qualche anima buona mi illumina, ormai son al taglio delle vene ... nella guida ci son tutti i vari metodi, proprietà etc ma non c'è un esempio pratico manco il più banale!
Comunque la guida è scaricabile in file .chm da qua se qualcuno ne ha voglia :)

http://www.codeplex.com/BarcodeRender/Release/ProjectReleases.aspx?ReleaseId=4075

Teech Profilo | Expert

Purtroppo non riesco a vedere la documentazione causa firewall...
Riesco a vedere l'indice del file chm ed ho notato che esiste la classe CodeEAN13CheckSum

Probabilmente il costruttore della classe CodeEAN13BarcodeDraw richiede come parametro un oggetto di classe CodeEAN13CheckSum
Una cosa del tipo:

Dim cks as new Zen.CodeEAN13Checksum(...) '<--- Da verificare cos'è
Dim drw as new Zen.CodeEAN13BarcodeDraw(cks)

Forse ti ho solo spostato il problema ma purtroppo non riesco a vedere il .chm della documentazione... Appena riesco controllo in quanto è una cosa che interessa anche a me

Ciao!!!
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

franksnet Profilo | Newbie

Nel frattempo ho anche trovato il modo di creare il codice a barre come immagine anzichè come font in PrintDocument ... partendo dal codice che si trova qua con gli opportuni ritocchi per adattarlo alle mie esigenze:

http://www.codeproject.com/Purgatory/MyCoolCode.asp

Anche in questo caso però, come per il font, ho lo stesso problema ... visualizzo a video correttamente, se mando in stampa la stampa manco parte ... ora mi domando, ma non è ke è proprio il componente printdocument che rompe le scatole?!!

A parte questo, tornando al Barcode Render, si Teech la cosa sta in quei termini, solo che se provo come hai fatto tu mi dice che "non è accessibile in questo contesto perchè è private"

Se ti può esser d'aiuto allego la guida direttamente al post, se te la fa scaricare da qua il firewall ...

franksnet Profilo | Newbie

Quando si dice notti insonni ...

in preda alla disperazione ( :p ) ho provato a scaricare i font proprietari di una azienda (non so se posso postare il link) e usando il loro codice dimostrativo Vb .NET già pronto ho provato a creare una stampa ... stesso immutabile problema, anteprima a video corretta se mando sulla stampante non parte, da cui ne deduco che usando il font non son io che sbaglio qualcosa è proprio un problema esterno, non so se derivi dalla stampante o dal print document ...

se qualcuno scopre qualcosa in merito ...

ora riprovo col Barcode Render ... è l'unica via di salvezza a sto punto :p

franksnet Profilo | Newbie

Nessuno che ha novità?!
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5