压缩过的pdf勿进!
压缩过的pdf勿进!
压缩过的pdf勿进!
重要的事情说三遍。
主要是提供两种解决办法
第一种:转成同级目录word
第二种:直接console打印
java的好处之一就是取之不尽的第三方包
这个先介绍pdf转word的方法:
利用的依赖包:
pdfbox.jar
<dependency>
<groupId>org.apache.pdfbox</groupId>
<artifactId>pdfbox</artifactId>
<version>2.0.16</version>
</dependency>
利用的类主要是:
org.apache.pdfbox.pdmodel.PDDocument
org.apache.pdfbox.text.PDFTextStripper
方法1:
核心代码是PDF类
package com.j;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.*;
/**
* @author joker
* @version 1.0
* @description pdf转word
* @date 2020-03-01 -- 12:01
*/
class Th implements Runnable {
public boolean flag = true;
public void run() {
System.out.println("转换中");
while (true) {
if (!flag) {
System.out.println();
System.out.println("转换word成功!");
return;
}
System.out.print(".#");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class PDF {
public static void main(String[] args) {
try {
Th th = new Th();
new Thread(th).start();
String pdfFile = "D:\\360安全浏览器下载\\多媒体教材.pdf";
PDDocument doc = PDDocument.load(new File(pdfFile));
int pagenumber = doc.getNumberOfPages();
pagenumber=10;
pdfFile = pdfFile.substring(0, pdfFile.lastIndexOf("."));
String fileName = pdfFile + ".doc";
File file = new File(fileName);
if (!file.exists()) {
file.createNewFile();
}
FileOutputStream fos = new FileOutputStream(fileName);
Writer writer = new OutputStreamWriter(fos);
PDFTextStripper stripper = new PDFTextStripper();
stripper.setSortByPosition(true);// 排序
stripper.setStartPage(5);// 设置转换的开始页
stripper.setEndPage(pagenumber);// 设置转换的结束页
stripper.writeText(doc, writer);//写到word
writer.close();
doc.close();
th.flag=false;
} catch (IOException e) {
e.printStackTrace();
}
}
}
方法2:
package com.j;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException;
import org.apache.pdfbox.text.PDFTextStripper;
import org.apache.pdfbox.text.PDFTextStripperByArea;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class ReadPDF {
public static void main(String[] args) throws InvalidPasswordException {
//本地测试入口
System.out.println(PDFtoStringArr("D:\\本学期课程\\操作系统\\sx\\1.pdf"));
}
public static String PDFtoStringArr(String file) {
try {
PDDocument document = PDDocument.load(new File(file));
document.getClass();
if (!document.isEncrypted()) {
PDFTextStripperByArea stripper = new PDFTextStripperByArea();
stripper.setSortByPosition(true);
PDFTextStripper tStripper = new PDFTextStripper();
String pdfFileInText = tStripper.getText(document);
System.out.println(pdfFileInText);
String[] lines = pdfFileInText.split("\\r?\\n"); //去换行和回车符
//循环打印String数组
for (String line : lines) {
System.out.println(line);
}
}
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
利用java,丰富自己的解决方法!