Udskrift i Java

Tags:    java

Hej folkens. Jeg sidder med et lille problem, det er første gang jeg forsøger at udskrive til min printer igennem Java og lang historie kort, der går af %&/%&/¤# til.

Koden jeg bruger er som flg:

Fold kodeboks ind/udKode 


Hvis i har nogle gode råd eller en anden/bedre løsning er i meget velkommen til at skrive.
P.S. jeg er kun interesseret i at udskrive tekst så i behøver ikke gå helt amok med grafik udskrifter :-)



7 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 3 karma
Sorter efter stemmer Sorter efter dato
Linket Martin har givet er en reference til Java 1.4 API'et, og jeg ville nok kigge på Java 6 API'et i stedet.:)
Du skal ændre System.out.println("FEJL"); til e.printStackTrace(); , og derefter skrive til os, hvad fejlen er.


Som sagt tidligere har jeg ikke den store erfaring med JAVA ;)



Har du prøvet at lave to forskellige filer? En der først skriver tingene ned i programmet, og et der printer teksten ud.
Jeg synes det lyder usandsyneligt at det skulle være det, men det er et forsøg hver.

Umiddelbart tænker jeg følgende tanker:
- Har du tjekket at printeren kan printe samme tekst ud, et andet sted?
- Skal man installere en eller anden jar-fil, eller lignende for at få det til at virke?



Jeg har ikke den store erfaring inden for JAVA, men prøv at se om det her kan hjælpe dig

http://java.sun.com/j2se/1.4.2/docs/api/javax/print/package-summary.html



Linket Martin har givet er en reference til Java 1.4 API'et, og jeg ville nok kigge på Java 6 API'et i stedet.:)
Du skal ændre System.out.println("FEJL"); til e.printStackTrace(); , og derefter skrive til os, hvad fejlen er.



Well det nytter ikke noget at udskrive stakken for der bliver ikke kastet nogle exceptions. Problemet ligger i at der nogle gange ikke bliver udskrevet noget som helst og andre gange bliver x% af filen udskrevet.

Jeg har selv en ide til hvad det kan være. Filen der skal udskrives skal også gemmes lokalt på HD'en, så det jeg gør er at oprette en OutputStream til at skrive teksten med, derefter flushes der og jeg lukker for OutputStreamen. (Dokumentetet bliver gemt som det skal). Lige efter dette er gjort kommer den kode som jeg har angivet, og mit bud på den nondeterminisme som forekommer ved udskrifterne er at styresystemet endnu ikke er færdig med at håndtere filen inden jeg beder om at åbne den igen for at kunne udprinte den. Giver det mening eller?? Styresystemet burde sætte programmet i venteposition indtil det er færdig med at håndtere skrivningen af filen, men jeg kan ikke se andre logiske forklaringer.

Jeg siger tak for de artikler som i henviser til, jeg har dog set på dem og det er der jeg fik inspiration til den kode jeg ikke kan få til at virke :-) men i skal stadig have et tak for jeres tid.



Okay nu har jeg så gennemlæst 3 forskellige artikler omkring dette emne og fundet frem til en løsning. Det viser sig så at det at udskrive ganske alm. tekst i et bestemt format (UTF-8, UTF-16, ASCII-US osv.) kræver at ens printer understøtter formatet, og her kom det så til min overraskelse at det er de færreste printere som understøtter noget som helst af dette. Så med mindre man har en super sej printer kommer man ikke udenom at skulle udskrive sin tekst som et billede.

Her er en lille stump kode som jeg fandt og modificerede i en af SUN's egent tutorials. Ved kald af metoden printIt() udskriver koden "Hello World!" ti gange og udprinter dokumentet.

Fold kodeboks ind/udKode 


Hvis i skulle få lyst til at bruge koden skal i vide at den ikke automatisk wrapper til næste side eller næste linie når man ryger ud over margin, derfor bliver man nødt til at gøre koden mere fleksibel så den eks. selv skifter side hvis y-koordinatet går ud over bunden af siden.



t