解决mxgraph导出图片的中文乱码和image节点无法显示的问题
1、写在前面,mxgraph原来它的jar包是有源码的啊,就在mxgraph\java\src里。
2、我改的部分:
\src\com\mxgraph\util\mxUtils.java
中的方法public static BufferedImage loadImage(String url)
/** * Draws the given text. */public void text(double x, double y, double w, double h, String str,String align, String valign, boolean vertical){if (!state.fontColorValue.equals(mxConstants.NONE)){x = state.dx + x * state.scale;y = state.dy + y * state.scale;w *= state.scale;h *= state.scale;Graphics2D g2 = createTextGraphics(x, y, w, h, vertical);Font font = new Font("宋体", Font.BOLD, 12);//增加这句后就能使打印的中文没有乱码了,这是参考activiti动态打印png图片的乱码问题解决滴! g2.setFont(font);FontMetrics fm = g2.getFontMetrics();String[] lines = str.split("\n");y = getVerticalTextPosition(x, y, w, h, align, valign, vertical,fm, lines);x = getHorizontalTextPosition(x, y, w, h, align, valign, vertical,fm, lines);for (int i = 0; i < lines.length; i++){double dx = 0;if (align != null){if (align.equals(mxConstants.ALIGN_CENTER)){int sw = fm.stringWidth(lines[i]);dx = (w - sw) / 2;}else if (align.equals(mxConstants.ALIGN_RIGHT)){int sw = fm.stringWidth(lines[i]);dx = w - sw;}}g2.drawString(lines[i], (int) Math.round(x + dx),(int) Math.round(y));y += fm.getHeight() + mxConstants.LINESPACING;}}}