java读取pdf输出的两种方式
@RequestMapping("PDF/{pdfFile}")public void getPdf(@PathVariable("pdfFile")String pdfFile,HttpServletResponse response){String pdfFile1 = getFileSrcByJsonFile();downloadPDF(response,pdfFile1);}@Reques
·
@RequestMapping("PDF/{pdfFile}")
public void getPdf(@PathVariable("pdfFile")String pdfFile,HttpServletResponse response){
String pdfFile1 = getFileSrcByJsonFile();
downloadPDF(response,pdfFile1);
}
@RequestMapping("PDF1/{pdfFile}")
public void getPdf1(@PathVariable("pdfFile")String pdfFile,HttpServletResponse response){
String pdfFile1 = getFileSrcByJsonFile();
//遍历删除,除去损坏,文件不存在,抛异常就是空白页
//创建文档容器
com.lowagie.text.Document document = new com.lowagie.text.Document(PageSize.A4,0,0,0,0);
PdfCopy copy = null;
try {
PdfReader reader = new PdfReader(pdfFile1);
document = new Document(new com.lowagie.text.pdf.PdfReader(reader).getPageSize(1));
copy = new PdfCopy(document,response.getOutputStream());
document.open();
ByteArrayOutputStream bos = new ByteArrayOutputStream();
//判断是否加水印
//复制合并pdf
copyToPdf(null,document, copy, reader);
try {
bos.flush();
bos.close();
}catch (Exception e){
e.printStackTrace();
}
}catch (Exception e){
e.printStackTrace();
}finally {
if(null != copy){
copy.close();
}
if(null != document){
document.close();
}
}
}
private void copyToPdf(Integer pageNum,Document document, PdfCopy copy, PdfReader reader) throws IOException, BadPdfFormatException {
int n = reader.getNumberOfPages();
for (int j = 1; j <= n; j++) {
document.newPage();
PdfImportedPage page = null;
if(pageNum == null) {
page = copy.getImportedPage(reader, j);
}else{
if(pageNum == j){
page = copy.getImportedPage(reader, j);
}
}
if(null != page) {
copy.addPage(page);
}
}
reader.close();
}
private String getFileSrcByJsonFile() {
String fileSrc = "D:/dataConfig.json";
String jsonStr = readJsonFile(fileSrc);
JSONObject jo = JSONObject.parseObject(new String(jsonStr));
return (String) jo.get("fileSrc");
}
private void downloadPDF(HttpServletResponse res, String fileSrc) {
try {
File file = new File(fileSrc);
BufferedInputStream bis = null;
OutputStream os = null;
FileInputStream fileInputStream = null;
res.setCharacterEncoding("utf-8");
res.setContentType("application/pdf"); // word格式
try {
fileInputStream = new FileInputStream(file);
byte[] buff = new byte[1024];
bis = new BufferedInputStream(fileInputStream);
os = res.getOutputStream();
int i = bis.read(buff);
while (i != -1) {
os.write(buff, 0, buff.length);
i = bis.read(buff);
os.flush();
}
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (bis != null) {
try {
bis.close();
fileInputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
} catch (Exception e) {
}
}
//读取json文件
private static String readJsonFile(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
FileReader fileReader = new FileReader(jsonFile);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
fileReader.close();
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
dataConfig.json:
{
"fileSrc": "D:\\docusPdfFile\\pdfs\\EMR\\1282371\\1483848190236411602.pdf"
}
依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.200</version>
</dependency>
<!--pdf生成工具类-->
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itextpdf</artifactId>
<version>5.4.2</version>
</dependency>
<dependency>
<groupId>com.itextpdf.tool</groupId>
<artifactId>xmlworker</artifactId>
<version>5.4.1</version>
</dependency>
<dependency>
<groupId>com.itextpdf</groupId>
<artifactId>itext-asian</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.xhtmlrenderer</groupId>
<artifactId>flying-saucer-pdf</artifactId>
<version>9.0.3</version>
</dependency>
更多推荐
已为社区贡献1条内容
所有评论(0)