用Java 读取 PDF 遇到中文标签该怎么处理

用Java 读取 PDF 遇到中文标签该怎么处理,第1张

1、创建一个路径为要读取的txt文件的file对象rFile。2、创建一个路径为要写入的txt文件的file对象wFile。3、创建一个FileReader对象,传入rFile到构造器。4、准备一个char数组,FileReader类有一个继承自javaioReader的read(char[]cbuf)方法,将字符读入数组。5、创建一个FileWriter对象,传入wFile到构造器。6、FileWriter类有一个继承自javaioWriter的write(char[]cbuf)方法,可以写入字符数组。7、最后别忘了关闭流。

给你提供一个参考例子,你可以在这个例子上试试,修改修改。也是解析PDF的。

import javaioFile;    

 import javaioFileOutputStream;    

 import javaioOutputStreamWriter;    

 import javaioWriter;    

 import javanetMalformedURLException;    

 import javanetURL;   

import orgapachepdfboxpdmodelPDDocument;

 import orgapachepdfboxutilPDFTextStripper;

 public class PdfReader {    

  public void readFdf(String file) throws Exception {    

   // 是否排序    

   boolean sort = false;    

   // pdf文件名    

   String pdfFile = file;    

   // 输入文本文件名称    

   String textFile = null;    

   // 编码方式    

   String encoding = "UTF-8";    

   // 开始提取页数    

   int startPage = 1;    

   // 结束提取页数    

   int endPage = IntegerMAX_VALUE;    

   // 文件输入流,生成文本文件    

   Writer output = null;    

   // 内存中存储的PDF Document    

   PDDocument document = null;    

   try {    

    try {    

     // 首先当作一个URL来装载文件,如果得到异常再从本地文件系统//去装载文件    

     URL url = new URL(pdfFile);    

    //注意参数已不是以前版本中的URL而是File。    

     document = PDDocumentload(pdfFile);    

     // 获取PDF的文件名    

     String fileName = urlgetFile();    

     // 以原来PDF的名称来命名新产生的txt文件    

     if (fileNamelength() > 4) {    

      File outputFile = new File(fileNamesubstring(0, fileName    

        length() - 4)    

        + "txt");    

      textFile = outputFilegetName();    

     }    

    } catch (MalformedURLException e) {    

     // 如果作为URL装载得到异常则从文件系统装载    

    //注意参数已不是以前版本中的URL而是File。    

     document = PDDocumentload(pdfFile);    

     if (pdfFilelength() > 4) {    

      textFile = pdfFilesubstring(0, pdfFilelength() - 4)    

        + "txt";    

     }    

    }    

    // 文件输入流,写入文件倒textFile    

    output = new OutputStreamWriter(new FileOutputStream(textFile),    

      encoding);    

    // PDFTextStripper来提取文本    

    PDFTextStripper stripper = null;    

    stripper = new PDFTextStripper();    

    // 设置是否排序    

    strippersetSortByPosition(sort);    

    // 设置起始页    

    strippersetStartPage(startPage);    

    // 设置结束页    

    strippersetEndPage(endPage);    

    // 调用PDFTextStripper的writeText提取并输出文本    

    stripperwriteText(document, output);    

   } finally {    

    if (output != null) {    

     // 关闭输出流    

     outputclose();    

    }    

    if (document != null) {    

     // 关闭PDF Document    

     documentclose();    

    }    

   }    

  }    

  /   

    @param args   

   /   

  public static void main(String[] args) {    

   // TODO Auto-generated method stub    

   PdfReader pdfReader = new PdfReader();    

   try {    

    // 取得E盘下的SpringGuidepdf的内容    

    pdfReaderreadFdf("d:\\bpdf");    

   } catch (Exception e) {    

    eprintStackTrace();    

   }    

  }    

 }

java导出pdf需要用到iText库,iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf

的文档,而且可以将XML、Html文件转化为PDF文件。

iText的安装非常方便,下载iTextjar文件后,只需要在系统的CLASSPATH中加入iTextjar的路径,在程序中就可以使用

iText类库了。

代码如下:

public class createPdf {

//自己做的一个简单例子,中间有之类的

//先建立Document对象:相对应的 这个版本的jar引入的是comlowagietextDocument

Document document = new Document(PageSizeA4, 360F, 360F, 360F, 360F);

public void getPDFdemo() throws DocumentException, IOException{

//这个导出用的是 iTextAsianjar 和iText-213jar 属于比较老的方法。 具体下在地址见:

//首先

//字体的定义:这里用的是自带的jar里面的字体

BaseFont bfChinese = BaseFontcreateFont("STSong-Light", "UniGB-UCS2-H", false);

// 当然你也可以用你电脑里面带的字体库

//BaseFont bfChinese = BaseFontcreateFont("C:/WINDOWS/Fonts/SIMSUNTTC,1",BaseFontIDENTITY_H, BaseFontEMBEDDED);

//定义字体 注意在最新的包里面 颜色是封装的

Font fontChinese8 = new Font(bfChinese, 100F, 0, new Color(59, 54, 54));

//生成pdf的第一个步骤:

//保存本地指定路径

saveLocal();

documentopen();

ByteArrayOutputStream ba = new ByteArrayOutputStream();

// PdfWriter writer = PdfWritergetInstance(document, ba);

documentopen();

//获取此编译的文件路径

String path = thisgetClass()getClassLoader()getResource("")getPath();

//获取根路径

String filePath = pathsubstring(1, pathlength()-15);

//获取路径 找到你需要往pdf上生成的

//这里根据自己的获取的路径写 只要找到位置就可以

String picPath = filePath +"\\WebContent" +"\\images\\";

//往PDF中添加段落

Paragraph pHeader = new Paragraph();

pHeaderadd(new Paragraph(" 你要生成文字写这里", new Font(bfChinese, 80F, 1)));

//pHeaderadd(new Paragraph("文字", 字体 可以自己写 也可以用fontChinese8 之前定义好的 );

documentadd(pHeader);//在文档中加入你写的内容

//获取

Image img2 = ImagegetInstance(picPath +"ccf-stamp-newpng");

//定义在文档中显示的绝对位置

img2scaleAbsolute(1370F, 1400F);

img2setAbsolutePosition(3300F, 370F);

//将添加到文档中

documentadd(img2);

//关闭文档

documentclose();

///设置文档保存的文件名

responsesetHeader("Content-

disposition", "attachment;filename=\""+ new String(("CCF会员资格确认

函pdf")getBytes("GBK"),"ISO-8859-1") + "\"");

//设置类型

responsesetContentType("application/pdf");

responsesetContentLength(basize());

ServletOutputStream out = responsegetOutputStream();

bawriteTo(out);

outflush();/

}

public static void main(String[]args) throws DocumentException, IOException{

createPdf pdf= new createPdf();

pdfgetPDFdemo();

}

//指定一个文件进行保存 这里吧文件保存到D盘的textpdf

public void saveLocal() throws IOException, DocumentException{

//直接生成PDF 制定生成到D盘testpdf

File file = new File("D:\\text2pdf");

filecreateNewFile();

PdfWritergetInstance(document, new FileOutputStream(file));

}

}

以上就是关于用Java 读取 PDF 遇到中文标签该怎么处理全部的内容,包括:用Java 读取 PDF 遇到中文标签该怎么处理、用java如何解析pdf文件、怎样用JAVA编程实现读取PDF文件中的文字或英文保存到TXT文档中,不使用第三方jar包。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9756662.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存