更新版本20201209优化pdf加载和去掉重新采集超时提示

master
zengwh 5 years ago
parent 2019e2bb17
commit 792e59fc60

@ -201,12 +201,12 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
String str = detail.getPdfPath();
if (StringUtils.isNoneBlank(str)) {
//病程分类先添加首次病程
if (detail.getAssortid().equals(assortId) && !flag) {
if (detail.getAssortid().equals(assortId) && !flag && StringUtils.isNotBlank(strPath)) {
pdfList.add(strPath);
flag = true;
}
//护理记录单先添加首次护理
if (detail.getAssortid().equals(nurseAssortId) && !nurseFlag) {
if (detail.getAssortid().equals(nurseAssortId) && !nurseFlag && StringUtils.isNotBlank(nursePath)) {
pdfList.add(nursePath);
nurseFlag = true;
}
@ -230,7 +230,8 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
private void pdfToSession(HttpServletResponse response,HttpSession session, List<Archive_Detail> arList,String pdfWater){
List<String> pdfList = mulFile2OneById(response, arList);
Jpg2PdfUtil.mulFile2One(response, pdfList, pdfWater);
Jpg2PdfUtil jpg2PdfUtil = Jpg2PdfUtil.getInstance();
jpg2PdfUtil.mulFile2One(response, pdfList, pdfWater);
//存至session
//session.setAttribute("showRecord",pdfList);
}
@ -253,9 +254,10 @@ public class Archive_DetailServiceImpl implements Archive_DetailService {
public void showPdf(HttpServletResponse response, HttpSession session, String pdfWater) {
List<String> pdfList = (List<String>)session.getAttribute("showRecord");
if(!CollectionUtils.isEmpty(pdfList)) {
Jpg2PdfUtil.mulFile2One(response, pdfList, pdfWater);
Jpg2PdfUtil jpg2PdfUtil = Jpg2PdfUtil.getInstance();
jpg2PdfUtil.mulFile2One(response, pdfList, pdfWater);
}
//删除缓存
//删除缓存` ` `
session.removeAttribute("showRecord");
}

@ -4,11 +4,14 @@ import com.lowagie.text.*;
import com.lowagie.text.Image;
import com.lowagie.text.pdf.*;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.springframework.util.CollectionUtils;
import javax.servlet.http.HttpServletResponse;
import java.awt.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
@ -26,94 +29,99 @@ import java.util.List;
* @Version: 1.0
*/
public class Jpg2PdfUtil {
private static Logger log = Logger.getLogger("myMsg");
/**
* itextpdf
*/
public static boolean check(String file) {
PdfReader pdfReader = null;
try {
File f = new File(file);
if(f.isFile()){
private PdfReader check(String file) {
if(StringUtils.isNotBlank(file)) {
PdfReader pdfReader = null;
try {
pdfReader = new PdfReader(file);
if (pdfReader.getNumberOfPages() != 0) {
return true;
return pdfReader;
}
} catch (Exception e) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String logStr = "'"+ file + "'"+"文件损坏或不存在";
log.info(logStr);
System.out.println(fmt.format(new Date()) + ":" + logStr);
} finally {
if (null != pdfReader) {
pdfReader.close();
}
}
} catch (Exception e) {
}finally {
if(null != pdfReader){
pdfReader.close();
}
}
return false;
return null;
}
private Jpg2PdfUtil(){};
public static Jpg2PdfUtil getInstance(){
return ContainerHolder.HOLDER.jpg2PdfUtil;
}
public static void mulFile2One(HttpServletResponse response,List<String> files,String waterMarkName) {
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private enum ContainerHolder{
HOLDER;
private Jpg2PdfUtil jpg2PdfUtil;
ContainerHolder(){
jpg2PdfUtil = new Jpg2PdfUtil();
}
}
public void mulFile2One(HttpServletResponse response, List<String> files, String waterMarkName) {
List<PdfReader> list = new ArrayList<>();
//遍历删除,除去损坏,文件不存在,抛异常就是空白页
Iterator<String> iterator = files.iterator();
while (iterator.hasNext()) {
String fileStr = iterator.next();
File file = new File(fileStr);
if(file.isFile()){
boolean flag = check(fileStr);
if(!flag){
iterator.remove();
System.out.println(fmt.format(new Date())+":"+file+"文件损坏");
}
}else{
iterator.remove();
System.out.println(fmt.format(new Date())+":"+file+"文件不存在");
PdfReader check = check(iterator.next());
if(null != check){
list.add(check);
}
}
if(!files.isEmpty()){
if (!CollectionUtils.isEmpty(list)) {
// pdf合并工具类
Document document = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfCopy copy = null;
try {
response.reset();
document = new Document(new PdfReader(files.get(0)).getPageSize(1));
copy = new PdfCopy(document,response.getOutputStream());
document = new Document(list.get(0).getPageSize(1));
copy = new PdfCopy(document, response.getOutputStream());
document.open();
for (String file : files) {
for (PdfReader reader : list) {
bos.flush();
PdfReader reader = new PdfReader(file);
PdfReader pdfReader = null;
//判断是否加水印
if (StringUtils.isNotBlank(waterMarkName)) {
setWatermark(bos, reader, waterMarkName, null);
pdfReader = new PdfReader(bos.toByteArray());
reader = new PdfReader(bos.toByteArray());
}
int n = reader.getNumberOfPages();
for (int j = 1; j <= n; j++) {
document.newPage();
PdfImportedPage page = null;
if (StringUtils.isNotBlank(waterMarkName)) {
page = copy.getImportedPage(pdfReader, j);
page = copy.getImportedPage(reader, j);
} else {
page = copy.getImportedPage(reader, j);
}
copy.addPage(page);
}
if(pdfReader != null){
pdfReader.close();
}
reader.close();
}
}catch (Exception e){
} catch (Exception e) {
//e.printStackTrace();
}finally {
if(null != copy){
} finally {
if (null != copy) {
copy.close();
}
try {
bos.flush();
bos.close();
}catch (Exception e){
} catch (Exception e) {
//e.printStackTrace();
}
if(null != document){
if (null != document) {
document.close();
}
}
@ -122,10 +130,11 @@ public class Jpg2PdfUtil {
//加水印
private static void setWatermark(ByteArrayOutputStream bos, PdfReader reader, String waterMarkName, String imgPath){
private void setWatermark(ByteArrayOutputStream bos, PdfReader reader, String waterMarkName, String imgPath) {
PdfStamper stamper = null;
try {
stamper = new PdfStamper(reader, bos);
//stamper.setEncryption(null, null, ~(PdfWriter.ALLOW_COPY | PdfWriter.ALLOW_PRINTING), PdfWriter.STANDARD_ENCRYPTION_128);
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
BaseFont base = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);
@ -133,7 +142,7 @@ public class Jpg2PdfUtil {
for (int i = 1; i < total; i++) {
content = stamper.getOverContent(i);// 在内容上方加水印
//加文字水印
if(StringUtils.isNotBlank(waterMarkName)) {
if (StringUtils.isNotBlank(waterMarkName)) {
gs.setFillOpacity(0.3f);
gs.setStrokeOpacity(0.3f);
content.setGState(gs);
@ -152,7 +161,7 @@ public class Jpg2PdfUtil {
content.showTextAligned(Element.ALIGN_CENTER, waterMarkName, 800, 1500, 40);
content.endText();
}
if(StringUtils.isNotBlank(imgPath)){
if (StringUtils.isNotBlank(imgPath)) {
Image image = Image.getInstance(imgPath);
image.setAbsolutePosition(200, 206); // set the first background
image.scaleToFit(200, 200);
@ -172,4 +181,4 @@ public class Jpg2PdfUtil {
}
}
}
}
}

@ -840,6 +840,6 @@
</div>
</body>
<script src="${path}/static/js/beHospList/beHospList.js?time=2020-12-01"></script>
<script src="${path}/static/js/hospitalCommom/hospitalCommom.js?time=2020-12-01"></script>
<script src="${path}/static/js/hospitalCommom/hospitalCommom.js?time=2020-12-09"></script>
<script src="${path}/static/js/hospitalLoadPdf/loadPdf.js?time=2020-10-16"></script>
</html>

@ -1444,11 +1444,11 @@ function submitUpdate(ids,notNursingIds,detailIds,sysFlag) {
}
})
}
setTimeout(function(){
/*setTimeout(function(){
toastr.error("后台按需采集超时,请联系系统运维人员");
//隐藏加载控件
$("#loading").hide();
},timeOut);
},timeOut);*/
},intervalTime);
}else{
toastr.error(data.msg);

Loading…
Cancel
Save