`
lynnlysh
  • 浏览: 178903 次
  • 性别: Icon_minigender_2
  • 来自: 天津
社区版块
存档分类
最新评论

解决mxgraph导出图片的中文乱码和image节点无法显示的问题

阅读更多
1、写在前面,mxgraph原来它的jar包是有源码的啊,就在mxgraph\java\src里。
2、我改的部分:
\src\com\mxgraph\util\mxUtils.java
中的方法public static BufferedImage loadImage(String url)
/**
	 * Loads an image from the local filesystem, a data URI or any other URL.
*增加了处理本地图片资源的方法,因此在导入graph的xml之前,要将图片的src换为本地服务器的绝对地址哦!
	 */
	public static BufferedImage loadImage(String url)
	{
		BufferedImage img = null;
		if (url != null)
		{
			// Parses data URIs of the form data:image/format;base64,xxx
			if (url.startsWith("data:image/"))
			{
				try
				{
					int comma = url.indexOf(',');
					byte[] data = mxBase64.decode(url.substring(comma + 1));
					ByteArrayInputStream is = new ByteArrayInputStream(data);
					img = ImageIO.read(is);
				}
				catch (Exception e1)
				{
					// ignore
				}
			}else if(url.startsWith("http://")){
				URL realURL = null;

				try
				{
					realURL = new URL(url);
					
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
				if (realURL != null)
				{
					try
					{
						img = ImageIO.read(realURL);
					}
					catch (Exception e1)
					{
						// ignore
					}
				}
			}else
			{//处理本地图片资源deal with the local image sourse
				File imageFile = null;

				try
				{
					imageFile = new File(url);
					System.out.println(imageFile.getAbsoluteFile());
					
				}
				catch (Exception e)
				{
					e.printStackTrace();
				}
				if (imageFile != null)
				{
					try
					{
						img = ImageIO.read(imageFile);
					}
					catch (Exception e1)
					{
						// ignore
					}
				}
			}
		}

		return img;
	}



src\com\mxgraph\canvas\mxGraphicsCanvas2D.java
修改了方法public void text(double x, double y, double w, double h, String str,
String align, String valign, boolean vertical)
/**
	 * 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;
			}
		}
	}


3.打包方法
将这两个文件编译后生成的class文件替换掉mxgraph-core.jar中的同名class文件即可。
特别注意:在你的工程中只需添加mxgraph-core.jar这个包,其他的mxgraph包不用加了啊。重复的。
*******************最最重要的分割线******************************
lysh如果爱是会过期的罐头,那么,我说过的保质期是不会变的,无论你怎样。保质期就在那里,不增不减。 不过,我多么希望,always have always will……
分享到:
评论
1 楼 liveths 2013-05-27  
可惜只有java的,net就没有吗?

相关推荐

    mxGraph插件,java代码xml导出成图片

    总的来说,实现这个功能需要对前端的mxGraph和后端的jGraphX有深入的理解,以及处理XML和图片转换的技巧。解决上述问题需要综合运用JavaScript、Java和图形处理知识,确保图形的完整性和正确性。在部署时,还需要...

    mxgraph如何实现拓扑图中节点闪烁或节点边框闪烁

    本篇文章将深入探讨如何利用mxGraph实现拓扑图中节点和边框闪烁的效果,以模拟节点故障等场景。 mxGraph的核心功能在于其灵活的图形操作和丰富的API,这使得开发者可以轻松地创建、编辑和展示各种图形,如流程图、...

    mxgraph之保存图片

    NULL 博文链接:https://lynnlysh.iteye.com/blog/1290007

    mxgraph editor

    1. **图形模型(Graph Model)**:mxGraph的核心是其图形模型,它代表了图表的结构,包括节点(Vertices)、边(Edges)和图形属性。节点通常表示流程中的任务或实体,边则表示它们之间的关系。 2. **绘图面板...

    mxgraph.MXGRAPH..MXGRAPH..

    5. **社区和资源**:MXGRAPH有一个活跃的开发者社区,提供了大量的示例、教程和插件,帮助开发者快速上手并解决遇到的问题。 6. **性能优化**:尽管MXGRAPH处理大量图形时表现良好,但为了优化性能,开发者可能需要...

    mxgraph Demo汉化(简单实例)

    mxgraph 是一个强大的JavaScript图形库,它允许开发者创建交互式图表、流程图和其他图形界面。这个"mxgraph Demo汉化(简单实例)"是专为初学者设计的,旨在帮助那些想要了解或深入学习mxgraph的朋友们提供一个中文...

    mxGraph中文文档.md

    mxgraph.js中文文档是一个官方的api,翻译来源于sunflower(github: https://github.com/SunInfoFE),提供给更多的开发者参考和共享源码资源!

    mxgraph API和demo

    - **图形视图(GraphView)**:视图负责根据模型和图形的状态计算节点和边的显示位置。 ### 2. mxGraph API #### 2.1 创建和操作图形 - **添加节点和边**:使用`graph.model.createElement('vertex')`创建节点,`...

    mxGraph的一些例子

    - **绘图API**:mxGraph提供了用于绘制和更新图形的函数,如`mxGraph.insertVertex`用于添加节点,`mxGraph.addEdge`用于创建边。 - **交互性**:用户可以直接在浏览器中拖动Vertices、调整Edge形状,实现图形的...

    mxgraph的中文学习资料

    **mxGraph 中文学习资料详解** mxGraph 是一个强大的图形绘制库,主要应用于Web应用程序,支持JavaScript、Java和.NET等多种编程语言。它提供了一套完整的API,使得开发者能够轻松地创建交互式图表、流程图、网络...

    mxgraph中右键和toolbar工具条的实现

    mxgraph 是一个强大的JavaScript库,用于创建交互式图形应用程序,如流程图、网络拓扑图等。它提供了丰富的API和功能,使得开发者可以轻松地在Web应用中集成图形编辑功能。在mxgraph中,实现右键菜单和工具条是两个...

    mxGraph破解包含ie和firefox

    mxGraph是一款强大的...通过以上方法,开发者可以逐步解决mxGraph在IE和Firefox中的兼容性问题,实现更广泛的支持。不过,随着IE的逐渐淘汰,重点可能更多地转移到如何优化mxGraph在现代浏览器和移动设备上的体验。

    mxGraph压缩包

    mxGraph是一款强大的JavaScript图形库,用于创建交互式图表和图编辑器。它允许开发者在Web浏览器中绘制复杂的图形,如流程图、网络拓扑图、UML...同时,及时关注官方更新和社区讨论,以获取最新的技术和问题解决方案。

    mxgraphDemo中文分类和API

    这个"mxgraphDemo中文分类和API"项目为开发者提供了便利,将mxgraph的示例代码进行了中文注解,便于理解和使用。下面,我们将深入探讨mxgraph的核心功能和API,并结合提供的中文分类进行解析。 ### 1. mxgraph的...

    mxGraph绘图插件

    mxGraph是一款强大的JavaScript图形库,主要用于创建交互式图表和图形应用程序。它提供了丰富的API和功能,使得开发者能够轻松地在Web浏览器中构建复杂的图形编辑器和流程图工具。这款库以其灵活性、性能和易用性...

    mxgraph.zip

    mxGraph是一款强大的JavaScript库,专用于创建交互式图形应用程序,如流程图、拓扑图和其他可视化图表。在本文中,我们将深入探讨mxgraph.js的核心功能、Node API的使用以及如何结合XML文件进行数据解析和图形展示。...

    mxgraph做的小例子

    3. **保存与导出**:支持将绘制好的图表导出为图片或XML格式,以便于后续处理和保存。 #### 三、mxgraph中的关键概念 - **节点(Node)**:表示图表中的单个元素,可以是文本、图像或者其他复杂结构。 - **边(Edge)**...

    mxgraph的学习笔记

    MXGraph中提供了层次和过滤功能,可以对图形元素进行层次化和过滤,方便用户浏览和操作。 常见变量、类及方法 MXGraph中提供了多种变量、类和方法,包括: * `mxGraph`: mxGraph的核心类,提供了图形的基本操作。...

    mxgraph1.02WEB图形设计

    7. **数据绑定与导入导出**:mxgraph支持多种数据格式的导入和导出,如JSON、XML和图片。这使得用户可以方便地在不同工具间交换数据,或者将图形数据存储在数据库中。 总的来说,"mxgraph1.02WEB图形设计"为Web开发...

    mxgraph 3.1.2.1 eval

    开发者可能已经解决了一些在早期版本中出现的问题,提高了库的稳定性和效率。此外,新版本可能会引入一些新特性,如新的图形元素、布局算法或交互模式,以满足更广泛的用户需求。 在使用mxgraph时,有几个核心概念...

Global site tag (gtag.js) - Google Analytics