Avatar billede frifoed Nybegynder
04. juni 2000 - 15:37 Der er 7 kommentarer og
1 løsning

Printe i centimeter istedet for i pixels!

Hej allesammen. Mit problem at jeg ikke ved hvordan man printer i centimeter istedet for pixels. Jeg bruger D5 og PRINTERS-objektet. Hvodan gøres det?
Avatar billede sjensen Nybegynder
04. juni 2000 - 20:08 #1
frifoed,

Det er ikke så enkelt når det er printeren du arbejder med. Pixels på en printer (printer.canvas) er afhængigt af hvilken font du vil skrive med. Fontopløsningen afgør hvor mange pixels der går på en centimeter/tomme, og er forskellig for hver fonttype.

De pixels du har på en skærm (f.eks. 1024x768) er ikke de samme som på en printer. Her er det suverænt fonten der er afgørende, og selvfølgeligt hvilken opløsning din printer kan skrive med. F.eks. vil en god Laser Printer måske skrive med en 600x600 opløsning.

For at kunne skrive i centimeter (beregne bredden af en tekst) skal du altså kende den pågældende fonts pixelopløsning og den opløsning printeren kan.

I printers unitten er der så vidt jeg husker også en "fonts" property. Dette er en stringlist der indeholder navnene på alle de fonts printeren understøtter. Samtidig kan du for hver af disse fonte (også via printers unittten) få oplyst hvilken opløsning den pågældende font har. Ud fra dette må du så beregne bredden af en tekst på din printer.

Desværre er det ikke så enkelt.

Hvis du derimod benytter et 3.parts program til udskrifter (f.eks. ReportPrinter Pro eller ReportBuilder) har du mulighed for at angive udskrift med beregning af bredden i centimeter, tommer eller pixels.

Desuden kunne jeg forestille mig at du kan finde noget freeware på Delphi Super Page.

Endeligt vil jeg råde dig til at kigge på borland.com:

Under support/delphi/devtech (eller noget i den stil) har de en download af en print-unit der giver dig rigtigt mange muligheder ved brug af printers unitten. Den source de tilbyder gratis kan bl.a. styre header/footer, margens, fonttyper m.m. sådan som man gør det i f.eks. word. Prøv at se om du kan finde den. Den indeholder mange gode informationer og den kan rent faktisk bruges ganske som den er.
Avatar billede frifoed Nybegynder
04. juni 2000 - 23:45 #2
Problemet er ikke så meget fontens størrelse men mere placeringen på siden. Jeg bruger printer.canvas.textout(x, y, tesksten) mit problem er så at x o y koordinaterne ikke er så håndterbare da de er i pixels. Hvis man istedet kunne definere dem i centimeter ville det være perfekt!
Avatar billede sjensen Nybegynder
05. juni 2000 - 09:50 #3
Det kan du når du kender fontens opløsning. Alle fonte beregnes efter en opløsning i pixels pr. tomme (og en tomme er ca. 2,54cm)

Når du kender fontens opløsning kan du med printer.canvas.width(xxx) få at vide hvormange pixels en tekst fylder. Og når du så ved hvormange pixels der går på en tomme med den font du har valgt kan du hurtigt beregne den i centimeter.
Avatar billede frifoed Nybegynder
05. juni 2000 - 23:16 #4
Kan man så ikke også sætte printerens opløsning? 300x300?
Avatar billede sjensen Nybegynder
06. juni 2000 - 12:08 #5
Normalt vil du kunne ændre noget på den. Ofte dog kun memmel 2 forskellige, afhængig af din printer. Se under Printere, egenskaber.
Avatar billede frifoed Nybegynder
07. juni 2000 - 10:16 #6
ok, men det jeg mente var hvordan man sætter printøpløsning igennem programmering. Da alle printere kan printe i en opløsning på 300x300 i hvert fald i nyere printere. For ellers skal jeg lave beregninger for alle printopløsninger 300x300, 600x600, 1200x1200 og da det blot er tekst jeg printer så er det jo ligemeget hvor høj opløsningen er, så understøttelse af de høje printopløsninger kan jo være ligegyldig.
Avatar billede sjensen Nybegynder
08. juni 2000 - 13:09 #7
Jeg har desværre ikke en Delphi installeret på den maskine hvor jeg er nu, så jeg er ikke sikker, men jeg mener at der i printers unitten er en procedure du kan kalde der sætter printerens opløsning. Reelt burde du endda kunne få en liste over hvilke opløsninger printeren kan håndtere, men jeg giver dig ret i at 300x300 må være standard for de fleste nye printere, og at der er lettere at nøjes med en opløsning.

Prøv engang at se i sourcen til printers og se om ikke du kan se den procedure jeg forventer skal være der.

En anden mulighed er selvfølgeligt at se i printerens manual og finde den streng der skal sendes til printeren som en initialiseringsstreng for at bl.a. at vælge opløsning.

I løbet af aftenen kan jeg checke om jeg kan finde den hvis du ikke selv har fundet noget i mellemtiden.
Avatar billede frifoed Nybegynder
23. august 2000 - 10:51 #8
Sjensen > Kan du ikke give et eksempel??? Der er efterhånden gået lang tid.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester