Hej! Hej Så det ska inte finnas någon begränsning? Det är inte jag som har gjort printfunktionen i programmet. Men personen som har utvecklat det är väldigt duktig och säger att detta är en begränsning i Java. (Att man inte kan skriva ut bättre än 72 dpi) Då har du ju bra stöd. Den förra utvecklaren är inte till så bra stöd eftersom han säger att det inte går att skriva ut bättre. (Och han är en duktig utvecklare!) En annan sak jag funderade på: Nej, det är ingen som byggt om programmet sedan dess. Jag fick precis programmet ifrån han som utvecklat det innan. Jag har komilerat om, men det hjälper inte. Han säger att det är en begränsning i Java! Jo, jag har läst där, men jag förstår det inte riktigt. Jag är inte haj på utskrifter/upplösning/DPI/. Det är ett attribut som inparameter till aset.add(), men det attributet (Mediaprintablearea) innehåller i sin tur en massa parametrar som jag inte vet vad man ska ha till. Det står tex "units - in which the values are expressed". Är det den upplösning som man kommer att ha på utskriften, eller den på skärmen, eller något annat? En god ide kan vara att testa metoden setPrinterResolution och ange exempelvis 300 Problemet är att han som gjort programmet sedan innan, inte använder sig av JobAttributes, PagesAttributes eller PrintJob. Hur ska jag då lägga in det i koden? Tja, Hej Det låter ju kanonbra!! Hej igen Jag plottar kurvor och kan därför inte nöja med 72 punkter per tum. Jag behöver fler punkter per tum.utskrift?
Är det sant att man i Java bara kan ange punkter i ett 72 dpi
raster? 1/72 tum är en för grov upplösning att skriva ut
med?
Är det någon som vet hur man kan komma förbi detta??
/DianaSv: utskrift?
Det här verkar helt konstigt
Kan du utveckla vad du menar.
Jag snickrade på program för bildhantering för ett år sedan
och stötte inte på några sådana här begränsningar.
Java utnyttjar klassen java.awt.print med flera för att skapa utskrifter.
Kort så går det till på ungefär samma sätt som att rita bilder till skärmen
men att det skulle finnas en begränsning på 72pixlar per tum.
Nä det måste vara felaktigt
För att lära sig hur man skriver ut i Java kan du gå till denna sida, den är dock på engelska.
http://java.sun.com/docs/books/tutorial/2d/printing/index.html
/MarkusSv: utskrift?
Ska man tom kunna skriva ut med samma upplösning som skrivaren?
Jag har ett program (som är skriven av någon annan) där kurvorna som jag ska skriva ut knappast går att tyda. Detta beror på att Java inte kan skriva ut i bättre upplösning än 72 (enligt förra utvecklaren) och på skärmen är kurvorna perfekta.
/DianaSv: utskrift?
Jag använder mig av jdk'n 1.4.0-beta3-b84. Både javax.swing, javax.awt.print är inkluderade i filerna.
/DianaSv: utskrift?
Jag håller med Markus, det ska inte vara några problem.
Länken han skickade med är bra och här kommer en till:
http://java.sun.com/j2se/1.4/docs/guide/jps/spec/jpsOverview.fm3.html
Men frågan är hur den förra utvecklaren implementerat printmetoderna?
/Urban Sv: utskrift?
Det låter ju bra att ni säger att det inte finns någon begränsing! (Använder ni er av setPrinterResolution för att bestämma upplösning? Eller hur bestäms det. Hittar inga exempel om upplösningar på nätet. Kan man sätta den till 96 tex, eller tom 600?)
Jag ska kolla igenom era länkar, tack för dessa.
/DianaSv: utskrift?
Har du eller någon annan byggt om programmet sen den gamle och mycket duktige programmeraren varit i farten?
Jag har inte petat med java så länge men det händer ju en hel del med standarklasserna!
Kanske det räcker med att kompilera om javafilerna igen, nu när du har en nyare JDK?
/UrbanSv: utskrift?
Han använder sig av något som heter MediaPrintableArea, så här:
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new MediaPrintableArea(imgX, imgY, imgWidth, imgHeight, MediaPrintableArea.INCH/72));
Detta förstår jag inte riktigt. Vad är de olika parametrarna för något och vad används de till. Varför är sista delat med 72 tex?
(MediaPrintableArea.INCH=25400 om jag skriver ut det.)
/DSv: utskrift?
Det finns även något som heter setPrinterResolution, men där står inte vad man högst kan ange för värde.
/D Sv: utskrift?
Det kanske krävs lite kodinsatser men det ska väl inte vara några problem för dig ;-)
Skulle metoden inte stödja 300 som värde lär komplitaron säga till vid kompilering. Sv: utskrift?
Han använder sig av
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(new MediaPrintableArea(imgX, imgY, imgWidth, imgHeight, MediaPrintableArea.INCH/72))
Vilket jag inte vet vad det betyder. Jag har frågat om det ovan.
Vad är tex crossFeedResolution och feedResolution för något?
/DSv: utskrift?
Jag är inte så hemma på 1.4-plattformen, men en sajt som du skulle kunna kolla på som har ett större forum om Java är: http://forum.java.sun.com
Prova att sök efter dina svar där...
/AndreasSv: utskrift?
Jag skall ta och leta upp den kod jag använde för att skriva ut bilder med
Å där ska fan inte vara någon begränsning på 72 punkter.
Jag arbetade rätt mycket med ett paket som heter Java Advanced Imaging (JAI)
Det är utvercklat tillsammans med IBM och Nasa. Nasa använder det bland annat för att distribuera satellit foton. Jag arbetade med röntgenbilder för tandläkare. Våra utskifter användes för att skapa remiss underlag för Försäkringskassan. Så jag köper helt enkelt inte det här med 72 punkter.
Jag använde mig av Java 1.3 och jag vet att det finns andra sätt att skriva ut informationen i Java 1.4. Men oavsett vad du vill skriva ut så kan du ju börja med att använda den guide som jag visade dig i mitt första eller andra inlägg. (Jag kommer inteihåg vilket). Och skit i det exemplet som du fått som bara klarar 72 punkter.
Den guide som jag pekade på visar grunderna. När du förstår dom kommer du säkert också förstå den kod som du har fått och som tydligen hade vissa begränsningar.
Jag återkommer med kodexempel
/Markus
PS det tar nog en vecka innan jag får ut den här på sidan.
Har tyvärr mycket att göra på jobbet så det får bli helg arbete
Men den som väntar på något gott....Sv: utskrift?
Först trodde jag verkligen på personen som skrivit programmet sedan innan, eftersom han verkar väldigt duktig på java. Men sedan har flera andra sagt att de inte alls känner igen den begränsningen. (Men de vet inte hur det ska lösas.)
Jag vore väldigt, väldigt hyggligt av dig. Brådska inte, imorgon åker jag iväg och kommer tillbaka först om 2 veckor.
/DSv: utskrift?
Jag skall kortfattat försöka förklara utskrifts systemet i Java
I ett senare skede skall jag nog försöka skapa en liten kurs i ämnet och publicera den här.
72pixlar per tum!?!
Jo då java arbetar med att vid utskrift ha en upplösning på 72pixlar / tum.
Men det går ju inte! Då blir ju allt kantigt.....
Nä man kan säga att det kordinat system som java använder sig av vid utskrift
är byggt på detta sätt MEN det innebär inte att saker o ting blir kantiga.
Först och främst så sitter koordinaten 0.0 längst upp i vänstra hörnet. Precis som den gör när man ritar normalt i Java. (Faktum är att skriva ut är precis samma sak som att rita man använder bara olika enheter för rendreringen)
Om man då skall sätta en bild 14cm ned på papperet så får man räkna med att det går 72 punkter per tum i detta fall blir det
(14/2,54)*72 = 396,8 punkter avrundar vi får vi 397 punkter.
Hur får jag min bild på 1024*768 punkter att se snygg ut vid utskrift
Efter som 1024 punkter är bredare än vad ett vanligt papper är (1024/72)*2.54=35,5cm
Måste man skala ned bilden.
Det gör att allt kommer att se snyggt och prydligt ut.
Det finns några tips för att göra det enkelt för sig när det gäller utskrifter
Lär dig dra streck på skärmen. Bygg ett litet Draw program.
Tänk i objekt. Java är 100% objektorienterat och kan du börja se dina bilder som objekt på papperet du skriver ut så har du kommit en bra bit på vägen
För att lära sig mer exakt hur man kodar för utskrifter måste jag tyvärr hänvisa till suns sidor. Länkar till dessa sidor finns längre upp i forumet.
Som sagt jag har lite tidsbrist. Men om ingen annan hinner före så skall jag försöka göra en kurs i hur utskrifter går till i Java och publicera den här.
/MarkusSv: utskrift?
/D