`
onlyor
  • 浏览: 382527 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

linux下Java字体乱码(解决图像中中文乱码)

    博客分类:
  • java
阅读更多

在Java中可以使用如下判断支持的字体
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironm

ent();
String[] fontFamilies = ge.getAvailableFontFamilyNames();
for (String s : fontFamilies) {
    System.out.println(s);
}

在jdk15以后,只需在~/jre/lib/fonts/下建一个fallback目录,把你想在java中使用的字体烤贝到这个目录中即可

以下方法在fc6下测试通过,假设用户的jre路径为 /usr/java/jdk1.6.0_03/jre/
#cd /usr/java/jdk1.6.0_03/jre/lib/fonts
#sudo mkdir fallback
将C:\WINDOWS\Fonts\simsun.ttc拷贝到 /usr/java/jdk1.6.0_03/jre/lib/fonts/fallback文件夹内 ok!
 
win7中没有,win2003 有simsun.ttc
测试程序
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics2D;
import java.awt.font.FontRenderContext;
import java.awt.geom.Rectangle2D;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;

public class Test {

	public static void main(String[] args) throws Exception {
		int width = 100;
		int height = 100;
		System.err.println(System.getProperty("sun.jnu.encoding"));
		String s1 = "时段";
//		String s2 = new String("你好".getBytes(System.getProperty("sun.jnu.encoding")), "UTF-8");
//		String s3 = new String("你好".getBytes("GBK"), System.getProperty("sun.jnu.encoding"));
//		String s4 = new String("你好".getBytes(), System.getProperty("sun.jnu.encoding"));

		File file = new File("/home/image.jpg");

		Font font = new Font("Serif", Font.BOLD, 10);
		BufferedImage bi = new BufferedImage(width, height,
				BufferedImage.TYPE_INT_RGB);
		Graphics2D g2 = (Graphics2D) bi.getGraphics();
		g2.setBackground(Color.WHITE);
		g2.clearRect(0, 0, width, height);
		g2.setPaint(Color.RED);

		FontRenderContext context = g2.getFontRenderContext();
		Rectangle2D bounds = font.getStringBounds(s1 , context);
		double x = (width - bounds.getWidth()) / 2;
		double y = (height - bounds.getHeight()) / 2;
		double ascent = -bounds.getY();
		double baseY = y + ascent;

		g2.drawString(s1, (int) x, (int) baseY);

		ImageIO.write(bi, "jpg", file);
	}

}
 
 
分享到:
评论

相关推荐

    Opencv图像Mat写入中文汉字

    在OpenCV库中,处理图像时我们经常需要在图片上添加文字信息,这...通过上述步骤,你可以在OpenCV的图像Mat中成功写入中文汉字。在实际应用中,你可以根据需求调整字体样式、颜色、位置等参数,以达到最佳的视觉效果。

    java实现PPT转PDF出现中文乱码问题的解决方法

    总之,解决Java中PPT转PDF中文乱码问题的关键在于识别并统一文本形状的字体。通过遍历和修改文本属性,我们可以确保在转换过程中使用一致的字体,从而避免乱码现象。在实际应用中,可能需要根据具体需求和文件内容...

    pdfbox转图片所需字体

    为了解决这个问题,我们需要确保系统包含所有PDF文档中引用的字体,或者在转换过程中正确地处理这些缺失的字体。 首先,我们需要理解PDF文档中的字体是如何工作的。PDF文档可能包含嵌入字体,这意味着字体数据直接...

    java URL转PDF文件(完美支持中文)

    在Linux环境下,由于字符编码的问题,中文字符可能会出现乱码,但通过特定的方法和库可以解决这个问题。 首先,`itext`是一个流行的Java库,用于处理PDF文档。它提供了创建、修改和操作PDF文档的功能。在URL转PDF的...

    cssbox 官方包

    在Java项目中使用CSSBox,你需要首先将`cssbox-4.12`压缩包解压,引入对应的JAR文件到项目依赖中。然后,可以按照以下步骤实现网页截图: 1. 加载HTML内容:使用`HTMLEditorKit`或`InputStream`读取HTML字符串或...

    pd4ml技术html导出pdf,支持中文,兼容linux

    2. **CSS支持**:PD4ML支持CSS2.1规范,允许开发者通过CSS控制PDF文档的样式,包括字体、颜色、布局、图像对齐等。这意味着HTML页面的视觉效果可以在PDF中得到精确复制,极大地提高了输出文档的专业性和美观度。 3....

    pd4ml技术html导出pdf,支持中文,兼容Linux

    标题中的“pd4ml技术html导出pdf,支持中文,兼容Linux”指的是一种使用Java库PD4ML将HTML内容转换为PDF文档的技术。PD4ML是一个强大的工具,它允许开发者通过简单的API调用来实现HTML到PDF的转换,并且特别强调了对...

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

    由于Linux默认可能不包含某些中文字体,因此在渲染图形时可能会出现乱码。解决方法是在服务器上安装必要的中文字体,或者在jGraphX的渲染过程中指定可用的中文字体。 总的来说,实现这个功能需要对前端的mxGraph和...

    word2pdfUtil.zip

    本文将深入探讨一个名为"word2pdfUtil"的Java工具类,它支持Windows和Linux系统,无需安装Office,实现了高效便捷的Word到PDF的转换。 首先,让我们了解为什么需要进行Word到PDF的转换。Word文档虽然在编辑和格式...

    tesseract-ocr-开源的ocr工具

    它允许用户手动标注图像中的每个字符,生成所需的box文件,从而帮助Tesseract学习新的字体或文字样式。这对于那些标准字体库无法涵盖的特殊字符或手写体尤其有用。 **4. 应用场景** Tesseract OCR广泛应用于各种...

    ireport参考(收集)

    在处理中文报表时,IReport可能会遇到字符编码或字体兼容性问题,导致中文乱码。为了解决这个问题,需要修改`com.lowagie.text.pdf.DefaultFontMapper`类中的`awtToPdf`方法,具体是在该方法中指定中文使用的字体...

    gb2312.rar

    .png”可能提供了一步一步的可视化指南,指导用户如何解决在使用GB2312编码过程中遇到的问题,比如字体不兼容、乱码等问题,或者在特定软件中启用GB2312编码的设置方法。 总的来说,这个压缩包可能是为了帮助用户...

    jasperreport与ireport的配置与使用

    - 在iReport中设置默认字体为已安装的中文字体。 - 在报表设计阶段指定文本元素使用该字体。 ##### 3.7 JasperReport中各band的功能 JasperReport中的band主要包括: - **Title Band**:报表的标题部分,通常用于...

    使用SWFTools将PDF转成Flash

    通过详细步骤和参数设置,指导用户在Windows和Linux环境下安装及使用SWFTools,并解决中文乱码问题。" 【标签】: "PDF Flash" **详细内容:** SWFTools是一款用于处理Flash SWF文件的工具集合,它包含了多个实用...

    PDFConvertToTxt

    如果PDF中的文本是以图像形式存在,转换器可能无法识别,导致转换失败或出现乱码。 - **格式丢失**:由于TXT不支持格式化,所有字体、颜色、布局等信息都会丢失,只保留原始文本内容。 - **编码问题**:确保PDF和TXT...

    iText-2.0.8&iTextAsian.jar&core-renderer,html转pdf依赖包

    这个扩展库包含了额外的字体和编码支持,特别是对于中文、日文和韩文等亚洲语言,确保在PDF中正确显示这些语言的字符,避免乱码或显示不全的问题。 3. **HTML到PDF转换**:在现代Web开发中,将HTML页面转换为PDF...

    Java实现将txt文件转成xls文件的方法

    它可以在Windows和Linux操作系统下正确地处理Excel文件。 下面是具体的实现代码: ```java package test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io....

    pdf转换txt

    PDF文件由多个对象组成,包括字体、图像、文本块等,转换过程就是提取其中的文本内容并忽略其他元素。 1. **手动转换方法**: - **在线转换器**:互联网上有许多免费和付费的在线PDF转TXT服务,如SmallPDF、Adobe...

    matlab常见问题,关于matlab编程的基本帮助文件

    如果是Microsoft Word中的乱码问题,可以尝试更改Word的字体设置或更新Word版本。 --- #### 五、索引超出矩阵尺寸错误 **问题:** “Index exceeds matrix dimensions” 是什么意思? **解答:** 当MATLAB报告 ...

Global site tag (gtag.js) - Google Analytics