优化pdf加载

master
zengwh 6 years ago
parent 8ee8497dd6
commit 71aa4e020f

@ -30,95 +30,6 @@ import java.util.List;
* @Version: 1.0
*/
public class Jpg2PdfUtil {
static Logger logger = LoggerFactory.getLogger(Jpg2PdfUtil.class);
public static void imageToPdf(HttpServletResponse response, List<String> filePaths, String pdfName) throws Exception{
// 实例化图牿
Image image = null;
pdfName = java.net.URLEncoder.encode(pdfName, "UTF-8");
Document doc = openDocument(response, pdfName);
try {
for (String filePath : filePaths) {
File file1 = new File(filePath);
if(file1.exists()){
if (file1.getName().endsWith(".tif") || file1.getName().endsWith(".tiff")) {
Object localObject1 = null;
Object localObject2 = null;
URL paramURL = Utilities.toURL(filePath);
try {
if (paramURL.getProtocol().equals("file")) {
localObject2 = paramURL.getFile();
localObject2 = Utilities
.unEscapeURL((String) localObject2);
localObject1 = new RandomAccessFileOrArray(
(String) localObject2);
} else {
localObject1 = new RandomAccessFileOrArray(paramURL);
}
int pageNums = TiffImage
.getNumberOfPages((RandomAccessFileOrArray) localObject1);
if (pageNums > 0) {
for (int i = 1; i <= pageNums; i++) {
localObject2 = TiffImage.getTiffImage(
(RandomAccessFileOrArray) localObject1, i);
image = (Image) localObject2;
}
}
if (localObject1 != null) {
((RandomAccessFileOrArray) localObject1).close();
}
} finally {
if (localObject1 != null) {
((RandomAccessFileOrArray) localObject1).close();
}
}
}else if (file1.getName().endsWith(".png")
|| file1.getName().endsWith(".jpg")
|| file1.getName().endsWith(".gif")
|| file1.getName().endsWith(".jpeg")
) {
// 实例化图牿
image = Image.getInstance(filePath);
}
// 获得图片的高庿
float heigth = image.getHeight();
float width = image.getWidth();
// 合理压缩h>w按w压缩否则按w压缩
int percent = getPercent(heigth, width);
// 设置图片居中显示
//image.setAlignment(Image.MIDDLE);
image.setAlignment(Image.ALIGN_CENTER);
//image.scaleAbsolute(500, 400);
// 按百分比显示图片的比便
if (width > 1024 || heigth > 786) {
image.scalePercent(percent+5);
}
doc.add(image);
}
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (doc.isOpen()) {
doc.close();
}
}
}
private static Document openDocument(HttpServletResponse response,String pdfName) throws Exception{
Document doc = new Document();
response.reset();
response.setCharacterEncoding("utf-8");
response.setContentType("application/pdf"); // word格式
response.setHeader("Content-Disposition", "attachment; filename=" + pdfName+ "("+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()) +").pdf");
// 定义输出文件的位罿
PdfWriter.getInstance(doc,response.getOutputStream());
// 开启文桿
doc.open();
return doc;
}
/**
* itextpdf
*/
@ -162,25 +73,23 @@ public class Jpg2PdfUtil {
if(!files.isEmpty()){
// pdf合并工具类
Document document = null;
ByteArrayOutputStream bos = null;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfCopy copy = null;
PdfReader reader = null;
PdfReader pdfReader = null;
try {
response.reset();
document = new Document(new PdfReader(files.get(0)).getPageSize(1));
copy = new PdfCopy(document,response.getOutputStream());
document.open();
bos = new ByteArrayOutputStream();
for (String file : files) {
bos.flush();
PdfReader reader = new PdfReader(file);
PdfReader pdfReader = null;
//判断是否加水印
if (StringUtils.isNotBlank(waterMarkName)) {
setWatermark(bos, file, waterMarkName, null);
setWatermark(bos, reader, waterMarkName, null);
pdfReader = new PdfReader(bos.toByteArray());
}
reader = new PdfReader(file);
int n = reader.getNumberOfPages();
pdfReader = new PdfReader(bos.toByteArray());
for (int j = 1; j <= n; j++) {
document.newPage();
PdfImportedPage page = null;
@ -191,6 +100,10 @@ public class Jpg2PdfUtil {
}
copy.addPage(page);
}
if(pdfReader != null){
pdfReader.close();
}
reader.close();
}
}catch (Exception e){
e.printStackTrace();
@ -198,19 +111,11 @@ public class Jpg2PdfUtil {
if(null != copy){
copy.close();
}
if(pdfReader != null){
pdfReader.close();
}
if(null != reader){
reader.close();
}
if(null != bos){
try {
bos.flush();
bos.close();
}catch (Exception e){
e.printStackTrace();
}
try {
bos.flush();
bos.close();
}catch (Exception e){
e.printStackTrace();
}
if(null != document){
document.close();
@ -221,11 +126,9 @@ public class Jpg2PdfUtil {
//加水印
private static void setWatermark(ByteArrayOutputStream bos, String input, String waterMarkName, String imgPath){
PdfReader reader = null;
public static void setWatermark(ByteArrayOutputStream bos, PdfReader reader, String waterMarkName, String imgPath){
PdfStamper stamper = null;
try {
reader = new PdfReader(input);
stamper = new PdfStamper(reader, bos);
int total = reader.getNumberOfPages() + 1;
PdfContentByte content;
@ -235,7 +138,6 @@ public class Jpg2PdfUtil {
content = stamper.getOverContent(i);// 在内容上方加水印
//加文字水印
if(StringUtils.isNotBlank(waterMarkName)) {
gs.setFillOpacity(0.3f);
gs.setStrokeOpacity(0.3f);
content.setGState(gs);
@ -269,29 +171,9 @@ public class Jpg2PdfUtil {
try {
assert stamper != null;
stamper.close();
reader.close();
} catch (DocumentException | IOException e) {
e.printStackTrace();
}
}
}
/**
* h>whw>hw=h
* @param h
* @param w
* @return
*/
private static int getPercent(float h, float w) {
int p = 0;
float p2 = 0.0f;
if (h > w) {
p2 = 210 / h * 279;
} else {
p2 = 210 / w * 279;
}
p = Math.round(p2);
return p;
}
}

@ -16,7 +16,7 @@ powerUrl=${POWER_URLHEAD}/font/getMenusByUserIdAndSysFlag
#\u6821\u9A8C\u5B8C\u6574\u6027IP
CHECKSUCCESS_IP = ${POWER_IP}
#\u6821\u9A8C\u5B8C\u6574\u6027\u7AEF\u53E3
CHECKSUCCESS_PORT = 8888
CHECKSUCCESS_PORT = ${POWER_PORT}
HomepageDictionary=http://${CHECKSUCCESS_IP}:${CHECKSUCCESS_PORT}/filing/services/HomepageDictionary?wsdl
HomepageMethod=CheckData

@ -1,4 +1,4 @@
log4j.logger.myLog=debug,myLog
log4j.rootLogger=info,myLog,errorMsg
log4j.appender.myLog=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myLog.File=D:\\logs\\emr_medical_record\\info\\info_log
log4j.appender.myLog.DatePattern=-yyyy-MM-dd'.log'
@ -7,17 +7,20 @@ log4j.appender.myLog.Threshold = INFO
log4j.appender.myLog.layout=org.apache.log4j.PatternLayout
log4j.appender.myLog.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}:%m%n
log4j.logger.errorMsg=error,errorMsg
log4j.appender.errorMsg=org.apache.log4j.DailyRollingFileAppender
log4j.appender.errorMsg.File=D:\\logs\\emr_medical_record\\error\\error_log
log4j.appender.errorMsg.DatePattern=-yyyy-MM-dd'.log'
log4j.appender.errorMsg.Append = true
log4j.appender.errorMsg.Threshold = error
log4j.appender.errorMsg.Threshold = error
log4j.appender.errorMsg.layout=org.apache.log4j.PatternLayout
log4j.appender.errorMsg.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss}:%m%n
#Console sql
#log4j.rootLogger=debug,myLog,errorMsg,CONSOLE
#log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
#log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
#log4j.appender.CONSOLE.layout.ConversionPattern =%d %-5p [%c{5}] - %m%n
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern =%d %-5p [%c{5}] - %m%n
log4j.logger.com.emr=debug
log4j.logger.com.alibaba=error
log4j.logger.org=error

@ -15,7 +15,7 @@ $(function(){
initTable1();
break;
case '3':
initTable2(getDeptName());
initTable2(getDeptName(),'table2');
break;
}
})
@ -216,18 +216,19 @@ function initTable1() {
},
//展开详情事件
onExpandRow: function (index, row, $detail) {//點擊datagrid 展開按鈕事件
var deptName = row.deptName;
var tableId = 'table_'+deptName;
var html = '<div id="tableDiv2">\n' +
' <table id="table2" class="table text-nowrap table-bordered"></table>\n' +
' <table id="'+tableId+'" class="table2" class="table text-nowrap table-bordered"></table>\n' +
' </div>';
$detail.html(html);
var deptName = row.deptName;
initTable2(deptName);
initTable2(deptName,tableId);
}
});
}
//第三层,根据科室查询病患详情
function initTable2(deptName) {
$("#table2").bootstrapTable({ // 对应table标签的id
function initTable2(deptName,tableId) {
$("#"+tableId).bootstrapTable({ // 对应table标签的id
url: path+"/statistics/getRecordStatisticsByDeptName", // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹默认为false
@ -384,7 +385,7 @@ $('#searchBtnStatistics').click(function () {
}else if(level == '2') {
$("#table1").bootstrapTable("refreshOptions", {pageNumber: 1});
}else if(level == '3') {
$("#table2").bootstrapTable("refreshOptions", {pageNumber: 1});
$(".table2").bootstrapTable("refreshOptions", {pageNumber: 1});
}
} else {
toastr.warning("正在查询,请稍等...");

Loading…
Cancel
Save