java 生成pdf linux中文不显示,Linux 添加中文字體庫,解決Java 生成中文水印不顯示問題...

本機 Windows 環境測試以下代碼生成中文水印完全沒問題,但是發布到Linux下不顯示,一開始以為是報錯了沒打印出來,搜索發現直接提示中文亂碼的或者不顯示的,才明白原來是字體庫原因,於是開始解決這個問題。

/***@paramsrcImgPath 源圖片路徑

*@paramtarImgPath 保存的圖片路徑

*@paramwaterMarkContent 文字內容

*@parammarkContentColor 文字顏色

*@paramfont 字體*/

public static void addLetterXY(String srcImgPath, String tarImgPath, String content,Color color,Font font, int x,inty) {try{//讀取原圖片信息

File srcImgFile = new File(srcImgPath);//得到原圖片

Image srcImg = ImageIO.read(srcImgFile);//文件轉化為圖片

int srcImgWidth = srcImg.getWidth(null);//獲取圖片的寬

int srcImgHeight = srcImg.getHeight(null);//獲取圖片的高//加文字

BufferedImage bufImg = newBufferedImage(srcImgWidth, srcImgHeight, BufferedImage.TYPE_INT_RGB);

Graphics2D g=bufImg.createGraphics();

g.drawImage(srcImg,0, 0, srcImgWidth, srcImgHeight, null);

g.setColor(color);//根據圖片的背景設置水印顏色

g.setFont(font); //設置字體

g.drawString(content, x, y);//畫出水印

g.dispose();//輸出圖片

FileOutputStream outImgStream = newFileOutputStream(tarImgPath);

ImageIO.write(bufImg,"png", outImgStream);

outImgStream.flush();

outImgStream.close();

System.out.println("添加文字完成");

}catch(Exception e) {

System.out.println("生成圖片出錯啦:"+e.getMessage());

}

}

首先根據介紹了解到,從jdk15版本(即jdk1.5_*) 后,可以自定義字體庫,添加方式如下鏈接:https://blog.csdn.net/nisen6477/article/details/82255435 但實際上在這里添加並沒有作用,使用以下方式輸出tomcat所擁有字體庫,發現添加的字體並不存在。

GraphicsEnvironment ge =GraphicsEnvironment.getLocalGraphicsEnvironment();

String[] fontFamilies=ge.getAvailableFontFamilyNames();for(String s : fontFamilies) {

System.out.println(s);

}

我這只配置到前 5 步就可以了,不需要重啟Linux 或字體服務,步驟總結為以下:

1、檢查字體是否已經安裝:

fc-list  ----------檢查所有已有的字體

fc-list :lang=zh -----------只檢查中文

2、到 C:\windows\fonts 復制對應字體庫,微軟雅黑、宋體、黑體等,各文件后綴可能不一樣,有的為ttf,有的為ttc,不影響使用。

3、上傳剛才復制的字體庫到/usr/share/fonts/zh_CN目錄下,如果沒有該目錄,用命令:mkdir /usr/share/fonts/zh_CN  來創建,然后再上傳。

4、修改字體權限,使root以外的用戶可以使用這些字體:chmod -R 777 /usr/share/fonts/zh_CN,使用777 賦予全部權限,chmod 指令可以查看該鏈接:https://www.cnblogs.com/lhm166/articles/6605059.html

5、建立字體緩存:

mkfontscale

mkfontdir

fc-cache -fv

6、重啟 Tomcat,以上文章中有的說要重啟 Linux系統,有的說要重啟字體庫服務,但我都沒有,而且也沒有字體服務,只是重啟了Tomcat 執行后有效。

7、可以再次使用 fc-list 查看字體庫,已經包含了新加入的字體,或者使用上邊的Java 輸出也包含了新字體,打印中文水印也OK。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值