Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python: Pankkiviivakoodin tulostuskoko

Sivun loppuun

multigamerr85 [12.11.2015 18:36:30]

#

Mitkä muuten olisivat hyvät korkeus- ja pituusmäärittelyt noille viivakoodin viivoille?

Oma tulostin näet tekee tuosta viivakoodista uskomattoman suttuisen.

Tässä oppaassa sanotaain ainakin että, viivakoodin korkeuden pitää olla 10,0 – 12,7 millimetriä.

Käytän pdf-tiedostojen tekoon reportlabia, että jos joku on sitä käyttänyt ja saanut aikaan hyvän viivakoodin, niin apu olisi tarpeen.

En sitten tiedä olenko laittanut viivakoodiin tiedot väärin, mutta käytin ainakin tätä merkkijonoa kun kokeilin tulostaa laskua:

[105] 55 81 01 71 00 00 00 12 20 00 48 29 90 60 00 00 05 59 58 22 43 29 46 71 10 01 31 [31] [stop]

Tässä vielä viivakoodin määrittely:

code_list = ['[105] 55 81 01 71 00 00 00 12 20 00 48 29 90 60 00 00 05 59 58 22 43 29 46 71 10 01 31 [31] [stop]']
for code in code_list:
            barcode = code128.Code128(code,barHeight=12.7*mm,barWidth=0.12*mm)

Grez [12.11.2015 19:15:56]

#

Joo ei noin. Tulostat tuossa 98 kpl viivakoodeja, kun pitäisi tulostaa vain yksi koodi.

En osaa sanoa osaako reportlab tehdä c-tyypin koodia, mutta jos osaa niin se menisi jotakuinkin:

code = '558101710000001220004829906000000559582243294671100131'
barcode = code128.Code128(code,barHeight=12.7*mm,barWidth=0.12*mm)

Itse olen tulostanut PDF:iin tarkkuudella 100 yksikköä tuumalle, jolloin tulostuu suht optimaalisesti lasertulostimilla jotka yleensä ovat 600 dpi tms.

multigamerr85 [12.11.2015 21:24:20]

#

Grez kirjoitti:

Joo ei noin. Tulostat tuossa 98 kpl viivakoodeja, kun pitäisi tulostaa vain yksi koodi.

Muutin koodin tähän muotoon:

from reportlab.graphics.barcode import code128
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

c = canvas.Canvas("test.pdf" ,pagesize=A4)
barcode = code128.Code128('558101710000001220004829906000000559582243294671100131',barHeight=12.7*mm,barWidth=0.12*mm)
barcode.drawOn(c, 2*mm, 20*mm)
c.showPage()
c.save()

ja silti viivakoodi on melko suttuinen, että en sitten tiedä onko vika koodin viivojen mitoissa vai tulostimessa. Ongelma voi olla myös reportlabissa.

Ideoita ongelman ratkaisuun otetaan vastaan. Tässä on tullut tulosteltua jo jokunen paperi enkä ole toivottua lopputulosta itse löytänyt.

Vai pitäiskö minun vaihtaa reportlabin tilalle joku toinen työkalu pdf-tiedostojen tekoon?

Grez [13.11.2015 08:11:25]

#

Olisiko ongelmana se, kun teet koodin niin pieneksi? Standardissa määritellään leveyskin (70 - 105 mm) koodille. Kokeile laitaa barWidth=0.254*mm. Ainakin itselläni se tuotti toimivan n. 84mm leveän pankkiviivakoodin.

multigamerr85 [13.11.2015 17:08:45]

#

Puhelimessani oleva viivakoodiskanneri luki viivakoodin sisällön tietokoneen näytöltä oikein, mutta paperilta ei, eli ongelma voi olla tulostimessa joka ei tulosta tarpeeksi tarkkaa viivakoodia.

Pessi [13.11.2015 19:08:57]

#

Kokeillitko vaihtaa viivanleveyttä Grezin ohjeen mukaan? Olikos näytöllä viivakoodi samankokoinen kuin paperilla? Pistäs viivakoodista pdf jakoon niin saa paremmin selville onko tulostimesta johtuvaa vai vääristä asetuksista.

Grez [13.11.2015 19:19:55]

#

http://grez.info/putka/multigamerr85/test.pdf

Tuossa on tuolla 0.254*mm koolla tuon koodin tuottama.

multigamerr85 [13.11.2015 19:24:22]

#

Mites minulla näyttää tältä?

Ja kyllä, laitoin tuon koon minkä Grez sanoi:

from reportlab.graphics.barcode import code128
from reportlab.lib.units import mm
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4

c = canvas.Canvas("test.pdf" ,pagesize=A4)
barcode = code128.Code128('558101710000001220004829906000000559582243294671100131',barHeight=12.7*mm,barWidth=0.254*mm)
barcode.drawOn(c, 2*mm, 20*mm)
c.showPage()
c.save()

Grez [13.11.2015 19:33:39]

#

No mutta toi sun laittama PDF:hän on visuaalisesti identtinen tuon äsken laittamani PDF:n kanssa?

Et kai tulosta tuota docdroidin ruudulla katselemiseen renderoitua sivua, vaan lataat PY:n tekemän PDF:n ja tulostat sen? Ruudulle tarkoitetun kuvan tulostaminen varmaan tuottaisikin vain suttua.

multigamerr85 [13.11.2015 19:41:26]

#

Ei en ole tulostanut tuota docdroidin sivua, vaan kun ohjelma on tehnyt viivakoodiin niin avaan sen
koneellani tulostuksen esikatseluun ja tulostan sitten.

Grez [13.11.2015 19:44:01]

#

"Tulostuksen esikatselu" kuulostaa epäilyttävältä. Kokeile avata se PDF acrobat readeriin ja tulostaa. Vai onko siis mäkki käytössä? Siinähän on sisäänrakennettu PDF-tuki, jolloin tuo kai on se "oikea" tapa.

multigamerr85 kirjoitti:

Mites minulla näyttää tältä?

Tästä sai käsityksen että sinulla näyttää jotenkin erilaiselta kuin tuo pdf minkä itse laitoin edeltävässä viestissä.

multigamerr85 [13.11.2015 19:45:20]

#

Käytössä Ubuntu 14.04

Voisiko siinä olla jokin ongelma?

Lisäys:

Grez kirjoitti:

Tästä sai käsityksen että sinulla näyttää jotenkin erilaiselta kuin tuo pdf minkä itse laitoin edeltävässä viestissä.

Se johtui siitä että docdroidin pdf:ssä oleva viivakoodi näytti minun näytöllä huonommalta kuin tuo sinun linkkaama.

Tai siis se ei tuntunut minusta niin tarkalta.

Grez [13.11.2015 19:49:37]

#

No periaatteessa sanoisin että jos PDF:n viivakoodi ruudulla näyttää skarpilta mutta tulostettaessa tulee suttua, niin sitten on jokin ongelma :D

Ehkäpä joku ubuntua aktiivisesti käyttävä osaa kommentoida paremmin.

multigamerr85 [13.11.2015 19:50:40]

#

Veikkaan itse tulostinta joka on jo melko vanha :)

Tämä tulostin siis käytössä minulla.

Ja sitäpaitsi kun tulostin tuon sinun linkkaamasi pdf:n niin yhtä huono siitä viivakoodista tuli, että se taitaa olla tulostimen vika.

Eli skanneriohjelma kyllä tunnistaa sen 128-tyypin viivakoodiksi, mutta sisältö on ihan eri kuin pitäisi.

Grez [13.11.2015 20:00:56]

#

Millä tavalla sisältö on eri kuin pitäisi? Itse testasin mobiiliverkkopankilla ja hienosti meni tiedot maksulomakkeelle. (Eli toimiva kuten kommentoin jo tuossa aamulla.) Kokeilin myös viivakoodinlukusovelluksella ja tuosta laittamastani PDF:stä tulee 558101710000001220004829906000000559582243294671100131 niinkuin pitäisikin. Jos tulee jotain muuta niin lienee huono lukuohjelma.

Aika huono kirjoitin kyllä jos ei saa tuollaista koodia tulostettua vaikka olisikin vanha. Tosin jos se tulostaa sekoittamalla mustaa kaikista sävyistä, niin sitten saattaa suttaantua - siihen voisi auttaa valita että tulostetaan mustavalkoisena.

Metabolix [13.11.2015 20:05:23]

#

multigamerr85 kirjoitti:

Se johtui siitä että docdroidin pdf:ssä oleva viivakoodi näytti minun näytöllä huonommalta kuin tuo sinun linkkaama.

Katsoit varmaan ruudulla docdroidin esikatselusivua, jossa viivakoodi näkyy suttuisempana kuin itse PDF-tiedostossa (kuvakaappaus). Katso PDF-tiedostoa, niin näet, että se on ihan sama kuin Grezillä.

multigamerr85 kirjoitti:

taitaa olla tulostimen vika.

Vanhoilla printtereillä voi tulla huonoa jälkeä ainakin, jos asetukset eivät ole optimaaliset. Tulosta mustavalkoisena ja riittävällä tarkkuudella.

multigamerr85 [13.11.2015 20:20:36]

#

Metabolix kirjoitti:

Katsoit varmaan ruudulla docdroidin esikatselusivua, jossa viivakoodi näkyy suttuisempana kuin itse PDF-tiedostossa (kuvakaappaus). Katso PDF-tiedostoa, niin näet, että se on ihan sama kuin Grezillä.

Juuri näin.

Kyllä se kuulkaas on tulostimessa vika.


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta