txt 转 pdf 不乱码

最近在做一个文档转pdf 在线浏览的功能,office 文档使用LibreOffice工具用java 成功实现了转换,txt也可以实现转换 但是存在中文乱码问题没有找到解决方法(如果有大神知道望指教),但想到字符可以保存成的pdf,那么我把txt读取成字符串然后再转为pdf不就行了吗?经过尝试发现的确可行,代码如下:

package com.office.OpenOffice;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.BaseFont;
import com.itextpdf.text.pdf.PdfWriter;

/**
 * @author:WHW
 * @CreateTime:2019年6月12日
 **/
public class TxtTopdf {

	public static void main(String[] args) {
		
		String pdfurl="D:/htmTopdf/ITextUtil.pdf";//保存路径
		String path="D:/htmTopdf/55.txt";
		generatePdfFile(pdfurl, DocumentToString(path));
	}

	/**
	 * 文档转string
	 */
	public static String DocumentToString(String path) {
		File file = new File(path);
		String str = "";
		try {
			FileInputStream in = new FileInputStream(file);
			// size 为字串的长度 ,这里一次性读完
			int size = in.available();
			byte[] buffer = new byte[size];
			in.read(buffer);
			in.close();
			str = new String(buffer, "GB2312");
			return str;
		} catch (Exception e) {
			return null;
		}
	}

	/**
	 * String生成PDF文件
	 */
	public static void generatePdfFile(String pdfurl, String content) {
		Rectangle rectPageSize = new Rectangle(PageSize.A4);// A4纸张
		Document document = new Document(rectPageSize, 40, 40, 40, 40);// 上、下、左、右间距
		try {
			// 创建一个PdfWriter实例,将文件输出流指向一个文件
			PdfWriter.getInstance(document, new FileOutputStream(pdfurl));
			// 打开文档。
			document.open();
			// 解决中文乱码,我这用到windos中的字体
			document.add(new Paragraph(content, new Font(
					BaseFont.createFont("C:\\WINDOWS\\Fonts\\SIMFANG.TTF", BaseFont.IDENTITY_H, BaseFont.EMBEDDED), 10,
					Font.NORMAL)));

		} catch (DocumentException de) {
			System.err.println(de.getMessage());
		} catch (IOException ioe) {
			System.err.println(ioe.getMessage());
		}
		// 关闭文档。
		document.close();
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值