/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Bug i java 6?
Fra : Henrik Schmidt


Dato : 26-01-07 00:11

Hej alle,

Jeg har lavet et lille program, som kan generere en postscript fil. Det
virker i java 1.5.0_08, men evince (postscript-viewer etc.) brokker sig,
når jeg forsøger med 1.6.0. Begge kører på Ubuntu. Jeg er ikke den store
postscript haj, og har derfor ikke nogen mening om, hvad der går galt,
udover at jeg kan se, at de genererede filer er forskellige.

Er der nogen, der gider køre nedenstående og fortælle mig, om det giver
fejl på deres system? Jeg vil godt lige sikre mig, at det ikke er mig
der har lavet noget tumpet, før jeg sender den videre. :)

import sun.print.PSStreamPrinterFactory;

import javax.print.attribute.PrintRequestAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.standard.MediaSizeName;
import javax.print.attribute.standard.JobName;
import javax.print.attribute.standard.OrientationRequested;
import javax.print.PrintException;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.PrintService;
import javax.print.StreamPrintServiceFactory;
import javax.print.SimpleDoc;
import javax.print.DocPrintJob;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Color;
import java.awt.print.Printable;
import java.awt.print.PageFormat;
import java.io.FileOutputStream;
import java.io.FileNotFoundException;

public class TextPrinter implements Printable {

public int print(Graphics graphics, PageFormat pageFormat, int
pageIndex) {

Font font = new Font("Sans-Serif", Font.PLAIN, 10);
Graphics2D g2d = (Graphics2D) graphics;
g2d.translate(pageFormat.getImageableX(),
pageFormat.getImageableY()); /* everything will be rendered relative to
the top-left corner of the printable area */
g2d.setColor(Color.black);
g2d.setFont(font);
int lineHeight = g2d.getFontMetrics().getHeight();

if (pageIndex == 0) {
g2d.drawString("Hello, World!", 0, lineHeight);
} else {
return Printable.NO_SUCH_PAGE;
}
return Printable.PAGE_EXISTS;
}

public static void main(String arg[]) throws PrintException,
FileNotFoundException {
Printable textPrinter = new TextPrinter();
DocFlavor docFlavor = DocFlavor.SERVICE_FORMATTED.PRINTABLE;
StreamPrintServiceFactory psFactory = new PSStreamPrinterFactory();
PrintService printService = psFactory.getPrintService(new
FileOutputStream("test6.ps"));
DocPrintJob job = printService.createPrintJob();
Doc doc = new SimpleDoc(textPrinter, docFlavor, null);
PrintRequestAttributeSet attrs = new
HashPrintRequestAttributeSet();
attrs.add(MediaSizeName.ISO_A4);
attrs.add(new JobName("test", null));
attrs.add(OrientationRequested.PORTRAIT);
job.print(doc, attrs);
}


Mvh,
Henrik Schmidt




 
 
Henrik Schmidt (26-01-2007)
Kommentar
Fra : Henrik Schmidt


Dato : 26-01-07 00:16

Henrik Schmidt wrote:
> Hej alle,

....og der mangler lige en }, men bortset fra det burde det kunne kompileres.

Mvh,
Henrik Schmidt

Thorbjørn Ravn Ander~ (26-01-2007)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 26-01-07 00:31

Henrik Schmidt <no.spam@nspmaxyz.abc> writes:

> hvad der går galt, udover at jeg kan se, at de genererede filer er
> forskellige.

Hvis det er ren tekst, så prøv at diff'e dem og se hvad den siger.

--
Thorbjørn Ravn Andersen

Henrik Schmidt (26-01-2007)
Kommentar
Fra : Henrik Schmidt


Dato : 26-01-07 01:05

Thorbjørn Ravn Andersen wrote:
> Henrik Schmidt <no.spam@nspmaxyz.abc> writes:
>
>> hvad der går galt, udover at jeg kan se, at de genererede filer er
>> forskellige.
>
> Hvis det er ren tekst, så prøv at diff'e dem og se hvad den siger.
>
$ diff test5.ps test6.ps
72c72
< << /NumCopies 1 >> setpagedevice
---
> << /DeferredMediaSelection true /PageSize [595.2755737304688
841.8897705078125] /ImagingBBox null /ManualFeed false /NumCopies 1 >>
setpagedevice
75d74
< << /PageSize [595.2755737304688 841.8897705078125] /ImagingBBox null
/ManualFeed false >> setpagedevice
79c78
< [4.1666665 0.0 0.0 4.1666665 300.0 300.0] concat
---
> [4.1666665 0.0 0.0 4.1666665 150.0 150.0] concat
82,84c81,83
< 468.0 0.0 L
< 468.0 648.0 L
< 0.0 648.0 L
---
> 523.276 0.0 L
> 523.276 769.89 L
> 0.0 769.89 L

Jeg ved intet om postscript, så jeg er på herrens mark.

Mvh,
Henrik Schmidt

Thorbjørn Ravn Ander~ (26-01-2007)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 26-01-07 01:16

Henrik Schmidt <no.spam@nspmaxyz.abc> writes:

> Jeg ved intet om postscript, så jeg er på herrens mark.

Du skriver jo heller ikke hvad fejlen er, så så er vi to.

Et bud er at du skal huske at angive sidestørrelsen...

--
Thorbjørn Ravn Andersen

Henrik Schmidt (26-01-2007)
Kommentar
Fra : Henrik Schmidt


Dato : 26-01-07 09:35

Thorbjørn Ravn Andersen wrote:
> Henrik Schmidt <no.spam@nspmaxyz.abc> writes:
>
>> Jeg ved intet om postscript, så jeg er på herrens mark.
>
> Du skriver jo heller ikke hvad fejlen er, så så er vi to.
>
> Et bud er at du skal huske at angive sidestørrelsen...
>

Jeps, du har en pointe (mht. at angive fejlmeddelsen). test5.ps er
output fra java 5 og test6.ps er output fra java 6.

t$ gs -q test6.ps
ERROR: /configurationerror in --setpagedevice--
Additional information: [/DeferredMediaSelection true]
Operand stack:
--dict:5/5(L)--
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval--
--nostringval-- 2 %stopped_push --nostringval-- --nostringval--
--nostringval-- false 1 %stopped_push 1 3 %oparray_pop
1 3 %oparray_pop 1 3 %oparray_pop 1 3 %oparray_pop
..runexec2 --nostringval-- --nostringval-- --nostringval-- 2
%stopped_push --nostringval-- 1 3 %oparray_pop --nostringval--
--nostringval-- --nostringval-- --dict:1/2(L)-- --nostringval--
2 %dict_continue
Dictionary stack:
--dict:1118/1686(ro)(G)-- --dict:0/20(G)-- --dict:102/200(L)--
Current allocation mode is local
Last OS error: 2
Current file position is 1952
ESP Ghostscript 815.02: Unrecoverable error, exit code 1

$ cat test5.ps | grep setpagedevice
<< /NumCopies 1 >> setpagedevice
<< /PageSize [595.2755737304688 841.8897705078125] /ImagingBBox null
/ManualFeed false >> setpagedevice

$ cat test6.ps | grep setpagedevice
<< /DeferredMediaSelection true /PageSize [595.2755737304688
841.8897705078125] /ImagingBBox null /ManualFeed false /NumCopies 1 >>
setpagedevice

Altså lader det til, at /DeferredMediaSelection true er blevet tilføjet,
hvilket ghostscript ikke kan lide.

I den sammenhæng fandt jeg følgende:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6266343

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6506286

Sun mener, at der er tale om en bug i ghostscript og arbejder på et
workaround. Tak for hjælpen. Nogen gange skal man motiveres til selv at
dykke lidt dybere :)

Mvh,
Henrik Schmidt

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste