linux下,java中SVG和jfreechart应用中,中文有乱码问题

Webswing实战:零代码改造Swing应用为Web应用 在软件现代化进程中,将传统桌面应用迁移至Web平台是常见需求。其核心原理在于通过远程渲染技术,将桌面应用的图形指令在服务器端执行并转换为可在浏览器中呈现的格式。这项技术的价值在于能以极低的改造成本,快速赋予遗留系统Web访问能力,实现跨平台、免安装的便捷访问。在Java生态中,Swing作为经典的GUI工具包,承载了大量企业级应用。通过引入Webswing这类专用服务器,开发者无需修改Swing应用源码,即可实现应用在浏览器中的原生级运行。这为数据可视化工具、内部管理系统等场景提供了平滑的现代化路径,有效平 阅读详情
apache的batik是一个处理svg的库, 本人本打算拿它来作一个过滤的servlet,在浏览器不支持svg的情况下,自动画个png图形送到客户端。本来以为是很简单的事情,但是....郁闷,这个问题搞掉了我2天时间, 现在回想起来, 这个问题前后出错的原因不一样,但是导致的问题缺相似,导致我主观的认为两个错误是同样原因引起的, 浪费了大量时间去检查. 一开始画图,中文是??? ,不用说,一定是中文编码问题, fix了, 然后又绘图,看上去正常了,不过正式运行以后发现,图形中部分中文文字显示不出来,为"口口", 我以为还是编码问题, 埋头扎进batik, 检查了半天,没有看到哪里对编码作了不当处理, 最后一路检查到graphics2d.drawXXX, 实在是没有办法了, 再下去就是native code了, 于是我回头又检查了一遍,还是不行,几乎放弃了。 今天早上来心情好,突然想到会不会是jdk的bug, 于是动手写了个jsp,代码如下 GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String fontNames[] = ge.getAvailableFontFamilyNames(); String path=application.getRealPath("/client")+"/test"; // Iterate the font family names for (int i = 0; i < fontNames.length; i++) { String fontName = fontNames[i]; out.print(fontName); BufferedImage bufferedImage = new BufferedImage(400,400,BufferedImage.TYPE_3BYTE_BGR); Graphics big = bufferedImage.createGraphics(); big.setFont(new Font(fontName,Font.PLAIN,30)); big.drawString("你好,发送到A",100,100); OutputStream os=new FileOutputStream(path+"/"+fontName+".jpg"); JPEGImageEncoder encoder=JPEGCodec.createJPEGEncoder(os); encoder.encode(bufferedImage); os.close(); } 用系统列出来所有字体画一遍图,然后一个一个看,果然,问题找到了 1没有simsun字体!汗~~~,原来能画出来的那些部分中文用的不知道是什么字体。 2 情况和batik一样,部分中文绘制不出来,为方框 上网google了一下, 发现原来jdk5.0在linux下和以前的版本还不一样,默认不支持中文字体的。得手动去搞一个fontconfig配置, 此文件在$JAVA_HOME/jre/lib/下, 果然有一大堆fontconfig.XX.properties, 官方的解释在这里, 懒得看那么多,直接搞一个自己的,先从windows上拷贝simsun.ttc到lib下面的fonts目录下 然后自己编一个简单的 # @(#)linux.fontconfig.SuSE.properties 1.2 03/10/17 # # Copyright 2003 Sun Microsystems, Inc. All rights reserved. # # Version version=1 # Component Font Mappings serif.plain.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 serif.bold.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 serif.italic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 serif.bolditalic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 sansserif.plain.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 sansserif.bold.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 sansserif.italic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 sansserif.bolditalic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 monospaced.plain.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 monospaced.bold.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 monospaced.italic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 monospaced.bolditalic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialog.plain.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialog.bold.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialog.italic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialog.bolditalic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialoginput.plain.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialoginput.bold.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialoginput.italic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 dialoginput.bolditalic.zh-1=Simsun GB-medium-r-normal--0-0-0-0-c-0-gb2312.1988-0 # Search Sequences sequence.allfonts=zh-1 # Exclusion Ranges # Font File Names 取名为fontconfig.RedHat.properties 中间的名字是操作系统名,如Redhat系统的就保存为fontconfig.RedHat.properties,WindowsXP的就保存为fontconfig.XP.properties,以此类推。 重新启动java, 搞定
服务端图表渲染新思路:JSON直接生成SVG/PNG,无需浏览器 数据可视化是报表、监控和文档自动化中的关键环节,而服务端高效产出图表图片一直是工程实践的难点。传统方案依赖前端图表库与浏览器截图,往往带来资源占用高、结果不稳定等问题。基于JSON配置的声明式渲染模式,将图表结构抽象为标准化数据,由渲染器直接输出SVG或PNG,实现了确定性、可复现、无浏览器的图形生成。该方案具备轻量部署、批量出图快、适合CI/CD集成等优势,为定时报表、监控告警配图、批量可视化等场景提供了稳定高效的解决路径。SlickFast正是这一思路的代表工具,通过配置契约分离数据与样式,让服务端出图 阅读详情

相关推荐

Batik详细教程

Batik 是为想使用 svg 格式图片来实现各种功能的应用程序和 Applet 提供的一个基于 java 的工具包。 工程创建的目的是为开发者提供一系列可以结合或单独使用来支持特殊的 svg 解决方案的核心模块。模块主要有 SVGParser,SVGGernerator,SVGDOM。Batik 工程的其他目的是使它具有高度的扩展性----举个例子,Batik 允许开发 者使用自定义的 SVG 元素。即使工程的目标是提供一系列核心模块,但是还是提供了一个完整的 SVG 浏览器,以便证 实各个模块的有效性和交互性

java batik 乱码_linux下batik-rasterizer.jar生成图片中文乱码

发现原来jdk5.0在linux下和以前的版本还不一样,默认不支持中文字体的。得手动去搞一个fontconfig配置, 此文件在$JAVA_HOME/jre/lib/下, 果然有一大堆fontconfig.XX.properties, 官方的解释在这里, 懒得看那么多,直接搞一个自己的,先从windows上拷贝simsun.ttc到lib下面的fonts目录下然后自己编一个简单的# @(#)lin...

weixin_29932613的博客 313

highcharts在linux下保存图片乱码的解决办法

highcharts在linux下保存图片乱码的解决办法

java batik 乱码_Linux下导出服务器缺少字体中文乱码问题解决办法(修订版)

[导出服务器配置] Linux下导出服务器缺少字体中文乱码问题解决办法http://bbs.hcharts.cn/thread-113-1-1.html在此基础上解决了字体问题。按照以上步骤操作完毕之后,在linux环境下还是中文乱码(缺少中文字体)修改后的code如下:package com.chengxi.hcharts.exporting;import java.io.File;import...

weixin_28950543的博客 489

详解电路设计中的RC电路

​ 一、什么是RC电路 RC电路是指由电阻R和电容C组成的电路,它是脉冲产生和整形电路中常用到 的电路。 常见的RC充、放电电路、RC积分电路合RC微分电路接下来详细讲解。 二、RC充、放电电路 RC充、放电电路如下图所示,下面通过充电和放电两个过程来分析此电路。 ​RC充、放电电路图 (1)RC充电电路 RC充电电路图如下图(a)所示 RC充电电路图及充电曲线图 ​由上图分析: 将上图a中开关S置于“1”处,电源E开始通过电阻R对电容C充电,由于刚开始充电时电容两端没有..

IT xiaobai 4万+

Comsol 弧形声学换能器声聚焦仿真

1. 弧度和曲率半径:弧形声学换能器的形状和曲率半径对声聚焦效果有重要影响。通常,较小的曲率半径和较大的弧度可以实现更强的声聚焦效果。弧形声学换能器声聚焦是指将声波能量集中在弧形声学换能器的特定区域内,以实现更强的声场强度和分辨率。4. 数值仿真和优化:使用声学仿真软件进行数值仿真可以帮助设计和优化弧形声学换能器的声聚焦效果。通过调整几何参数、材料特性和激励信号等参数,可以模拟和优化声聚焦效果。2. 激励信号:通过调整激励信号的频率和幅值,可以实现声波在弧形声学换能器中的聚焦效果。

声学黑洞仿真工作室 1617

java使用batik 将svg代码转换成png图片 linux服务器中文乱码

描述: 现需求是将highcharts图表生成图片,highcharts提供获取svg代码方法, 使用java batik 将svg代码转换成png图片,功能测试都正常,将项目打包到linux服务器后测试,中文乱码了 原因: 经过一番折腾发现是字体的问题,linux系统上没有微软雅黑字体 解决: 在windows C:\Windows\Fonts目录下找到微软雅黑 .ttc 文件 上传...

m0_37924754的博客 2316

气象干旱触发水文(农业)干旱的概率及其触发阈值的动态变化-贝叶斯copula模型

本文通过建立不同类型干旱传播过程的触发阈值模型,解析了在不同等级气象干旱胁迫下诱发次一级干旱类型的触发阈值。通过贝叶斯概率模型,我们推导了气象干旱与水文干旱、农业干旱、地下水干旱之间的条件概率关系,进一步明确了气象干旱引发水文干旱、农业干旱和地下水干旱的概率及其触发阈值。该模型有效揭示了气象干旱对各级干旱类型的传播机制及其动态变化,为干旱预警系统的建立和水资源管理提供了理论依据和技术支持。

frankgis的博客 2503

java使用 Batik svg代码转换成png图片 JPEGTranscoder/PNGTranscoder 转图片 linux 中文乱码

目录 缺少中文字符集 缺少微软雅黑字体 两种情况:缺少中文字符集,缺少对应中文字体(windows一般默认微软雅黑)。 本文链接:https://blog.youkuaiyun.com/qq_31183727/article/details/102678965 缺少中文字符集 //生成svg DOMImplementation domImpl = SVGDOMImplementation....

流水随清风的博客 2746

多尺度仿真软件:Copasi_(1).Copasi概述

Copasi(Complex Pathway Simulator)是一款开源的多尺度仿真软件,专为生物化学、系统生物学和合成生物学领域的研究人员设计。它不仅能够模拟细胞内和细胞间的生化反应网络,还能处理代谢途径、信号传导途径和基因调控网络等多种复杂系统。Copasi提供了用户友好的图形界面和强大的命令行接口,支持多种仿真算法和分析工具,使用户能够高效地进行模型构建、仿真和分析。Copasi允许用户创建自定义报告,以便生成特定格式的仿真结果。用户可以通过图形界面或命令行创建自定义报告。

kkchenjj的博客 857

点云配准3:3d-ndt算法在pcl上的实现以及参数设置

3d-ndt算法在pcl上的使用方法以及参数设置

诺有缸的高飞鸟的博客 7892

Svg图片导出中文乱码问题解决

将SVG的Dom对象用batik-all转为图片导出时出现了图片中的中文乱码问题,在页面上展示正常,其原因是svgDOM对象未设置编码或设置的编码格式不对。 svgdom.setAttribute("encoding","UTF-8"); 加入编码属性后,问题解决。 ...

minantadd的博客 3285

Gbase 8a GDCA考试真题100%

本文整理一些Gbase 8a中非常易错得考试真题及答案,而且都是不好搜的。加粗的是正确答案。

打工之路,一路生花 4305

坑 利用Apache Batik JPEGTranscoder/PNGTranscoder 转图片 linux 中文乱码

利用Apache Batik实现 SVG转PNG/JPG 中文乱码 //生成svg DOMImplementation domImpl = SVGDOMImplementation.getDOMImplementation(); String svgNS = SVGDOMImplementation.SVG_NAMESPACE_URI; SVGDocument doc = (SVGDocum...

maple的博客 4935

Calibre LVS 问题解析

LVS常见问题与解决办法

m0_61544122的博客 2万+

Unreal5从入门到精通之一文搞懂Unreal的C++代码编译之谜

我们在开发Unreal项目时,如果时蓝图模板的项目,一般问题不大,因为当你修改完蓝图,点击编译Compile+保存Save,就可以继续开发了。这对于开发者来说也非常友好。但是,如果你使用的C++模板开发项目,代码编译一切都变得魔幻起来,IDE(VS/Rider)里面有编译,编辑器里面也有编译,有什么区别呢?我们来列举几个新手常碰到的问题。1.代码我明明新建了,编辑器里怎么看不到?2.昨天我新家的功能运行的好好的,今天怎么感觉还是老逻辑。或者昨天加的新代码,新蓝图不见了。

TxNet 1606

【Java&Linux】SVGConverter导出图片乱码、Linux配置中文字符集

SVGConverter导出图片乱码 问题描述:svg文件正常显示中文,转换图片文件出现乱码,且仅在部分环境下异常 问题解决:查看操作系统,发现缺少中文字符集,查看/etc/sysconfig/i18n 配置发现仅支持英文。 Linux配置中文字符集 1、安装中文包: #yum -y groupinstall chinese-support 2、修改字符编码配置文件 # vi /etc/sys...

qqchaozai的专栏 1021

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

解决Linux 中文乱码

locale-gen(生效命令,将注释打开即可,修改完成后,执行下 locale-gen 命令使其生效)export LANG=zh_CN.utf8(命令行中使用命令 source 下配置文件,使其生效)****4、修改/etc/default/locale。修改/etc/profile文件,在最下面增加。4.1docker 镜像 运行以下代码。source 使其生效。

smile 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

svg 中文乱码

参考下面的方法。动态生成时,在程序里用英文名指定字体就可以了 我们在制作SVG过程中,经常会遇到 SVG乱码问题,作为初入SVG的朋友更是对乱码感到无措。经过多次尝试后有人可能会发现制作的SVG,只有SVG中涉及到中文文字时才会出现乱码,而用 英文字符却没有这个问题。那么是什么原因造成了SVG中文乱码呢?本文章将详细介绍解决SVG中文乱码的问题步骤及方法。来源:SVG中国(ChinaS

sclxf的专栏 3037

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

linux下batik-rasterizer.jar生成图片中文乱码

为什么80%的码农都做不了架构师?>>> ...

weixin_34179762的博客 231

java中时间格式匹配

// This file contains date formats that Frink will parse.// See documentation for SimpleDateParser or docs/index.html for more details.//// Now that regular expressions are possible in Frink, I

Three_H的专栏 2959
上一篇: 在Java中读写Excel文件
下一篇: Windows2000下的tomcat+apache的web服务整合
Three_H
博客等级 码龄22年 1粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值