printing - Cannot get Java Print API to use fonts after exporting to JAR -


i writing java application ability print formatted views of data using java printing api. below brief relevant snippet of code printing:

public static void printstaffassignments(){     printerjob job = printerjob.getprinterjob();     job.setprintable(new staffassignmentsprintable());     boolean doprint = job.printdialog();      if (doprint) {         try {             job.print();         } catch (printerexception e) {            errorutility.createerror("error while trying print staff assignments");         }     } }   public static class staffassignmentsprintable implements printable{      @override     public int print(graphics g, pageformat pf, int page)             throws printerexception {          string[][] data;          if(page == 0){             data = fiscalyear.getinstance().getstaffassignmentsasstrings();         }else{             return no_such_page;         }          graphics2d g2d = (graphics2d)g;         g2d.translate(pf.getimageablex(), pf.getimageabley());          final int chart_top = 75;         int y = chart_top;          g.setfont(new font("arial", font.plain, 10));          for(int = 0; < data.length; i++){             g.drawstring(data[i][0], 35, y);             g.drawstring(data[i][1], 135, y);             g.drawstring(data[i][2], 235, y);             g.drawstring(data[i][3], 335, y);             g.drawstring(data[i][4], 435, y);             y += 17;         }                  ...          return page_exists;     }  } 

this prints expected when run program out of eclipse, when export jar, not change font, instead using assume system default. tried use code in java tutorials (http://docs.oracle.com/javase/tutorial/2d/text/fonts.html) , copied arial.tff folder alongside jar, adding in:

    try {          java.awt.graphicsenvironment ge =               java.awt.graphicsenvironment.getlocalgraphicsenvironment();          ge.registerfont(java.awt.font.createfont(java.awt.font.truetype_font, new java.io.file("data/arial.ttf")));     }       ... 

at point before of print code called, still, jar not draw of strings using arial.

the interesting part of is, use jlabels in program set arial font and, without graphicsenvironment code, jar seems loading arial fine. example:

font nostrike = new font("arial", font.plain, 12); ... jlabel name = new jlabel(c.getfullname()); name.setfont(nostrike); 

any ideas why printing code can't find/respect font?

ended solving of this answer. cannot explain why affecting printing api , not swing components, in order use font in printing api, had include under /src folder , use getresourceasstream() method access it.

it seems though, @ least in case, while swing able access system fonts , external font files, printing api or graphics2d required files loaded inputstream.


Comments

Popular posts from this blog

jquery - How can I dynamically add a browser tab? -

node.js - Getting the socket id,user id pair of a logged in user(s) -

keyboard - C++ GetAsyncKeyState alternative -