Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
W
warehouse
概览
Overview
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
苗卫卫
warehouse
Commits
b13670dc
提交
b13670dc
authored
11月 03, 2023
作者:
苗卫卫
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
aspost.words包引入
父级
d06d8778
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
119 行增加
和
119 行删除
+119
-119
pom.xml
+5
-5
src/main/java/com/boco/nbd/wios/flow/service/impl/OrderServiceImpl.java
+1
-1
src/main/java/com/boco/nbd/wios/flow/util/PdfUtil.java
+113
-113
没有找到文件。
pom.xml
查看文件 @
b13670dc
...
...
@@ -111,11 +111,11 @@
<version>
3.4.1
</version>
</dependency>
<!-- <dependency>--
>
<!-- <groupId>com.aspose</groupId>--
>
<!-- <artifactId>aspose-words</artifactId>--
>
<!-- <version>15.8.0</version>--
>
<!-- </dependency>--
>
<dependency
>
<groupId>
com.aspose
</groupId
>
<artifactId>
aspose-words
</artifactId
>
<version>
15.8.0
</version
>
</dependency
>
</dependencies>
...
...
src/main/java/com/boco/nbd/wios/flow/service/impl/OrderServiceImpl.java
查看文件 @
b13670dc
...
...
@@ -1581,7 +1581,7 @@ public class OrderServiceImpl extends BaseDaoService3<OrderPO, FlowOrderMapper>
indexOne
++;
}
blockPairBo
.
setExperiences
(
data
);
//
pdfUtil.getWord(path, blockPairBo, fileName, response);
pdfUtil
.
getWord
(
path
,
blockPairBo
,
fileName
,
response
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
...
...
src/main/java/com/boco/nbd/wios/flow/util/PdfUtil.java
查看文件 @
b13670dc
...
...
@@ -3,7 +3,7 @@ package com.boco.nbd.wios.flow.util;
import
cn.hutool.core.date.DatePattern
;
import
cn.hutool.core.date.DateUtil
;
//
import com.aspose.words.*;
import
com.aspose.words.*
;
import
com.boco.nbd.cams.core.constant.CamsConstant
;
import
com.boco.nbd.wios.flow.entity.pdf.BlockPairBo
;
import
com.boco.nbd.wios.flow.entity.pdf.SurveyDataBo
;
...
...
@@ -40,20 +40,20 @@ public class PdfUtil {
judgment
=
0
;
}
//
private static boolean getLicense() {
//
boolean result = false;
//
//
try {
//
InputStream is = PdfUtil.class.getClassLoader().getResourceAsStream("License.xml");
//
License aposeLic = new License();
//
aposeLic.setLicense(is);
//
result = true;
//
} catch (Exception var3) {
//
var3.printStackTrace();
//
}
//
//
return result;
//
}
private
static
boolean
getLicense
()
{
boolean
result
=
false
;
try
{
InputStream
is
=
PdfUtil
.
class
.
getClassLoader
().
getResourceAsStream
(
"License.xml"
);
License
aposeLic
=
new
License
();
aposeLic
.
setLicense
(
is
);
result
=
true
;
}
catch
(
Exception
var3
)
{
var3
.
printStackTrace
();
}
return
result
;
}
/**
* 根据模板生成word
...
...
@@ -61,59 +61,59 @@ public class PdfUtil {
* @param path 模板的路径
* @param fileName 生成word文件的文件名
*/
//
public void getWord(String path, BlockPairBo blockPairBo, String fileName, HttpServletResponse response) throws Exception {
//
ClassPathResource resource = new ClassPathResource(path);
//
InputStream is = resource.getInputStream();
//
String saveRoute = path.substring(0, path.lastIndexOf("/"));
//
XWPFTemplate xwpfTemplate = XWPFTemplate.compile(is);
//
ByteArrayOutputStream output = new ByteArrayOutputStream();
//
if (judgment == 0) {
//
fileName = java.net.URLDecoder.decode(fileName, CamsConstant.UTF_8);
//
xwpfTemplate.render(blockPairBo).write(output);
//
String pdf = fileName.substring(0, fileName.lastIndexOf(".")) + DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN) + ".pdf";
//
ByteArrayInputStream input = new ByteArrayInputStream(output.toByteArray());
//
doc2pdf(input, saveRoute + "/" + pdf);
//
File file = new File(saveRoute + "/" + pdf);
//
//判断文件大小,并压缩
//
if (file.length() > WiosConstant.FILE_SIZE) {
//
file.delete();
//
for (SurveyDataBo bo : blockPairBo.getExperiences()) {
//
compressPictures(bo);
//
}
//
getWord(path, blockPairBo, fileName, response);
//
return;
//
}
//
try {
//
log.info("========================{}下载开始========================", pdf);
//
is = new BufferedInputStream(new FileInputStream(saveRoute + "/" + pdf));
//
byte[] buffer = new byte[is.available()];
//
is.read(buffer);
//
response.reset();
//
// 设置response的Header
//
response.addHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), CamsConstant.UTF_8));
//
response.addHeader("Content-Length", "" + file.length());
//
response.setContentType("application/octet-stream");
//
response.setCharacterEncoding("utf-8");
//
OutputStream os = new BufferedOutputStream(response.getOutputStream());
//
os.write(buffer);
//
os.flush();
//
log.info("========================{}下载结束========================", pdf);
//
//删除缓存文件
//
file.delete();
//
} catch (IOException ex) {
//
log.error(pdf + "下载异常:", ex);
//
ex.printStackTrace();
//
}
//
} else {
//
fileName = java.net.URLDecoder.decode(fileName, CamsConstant.UTF_8);
//
output = new ByteArrayOutputStream();
//
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
//
xwpfTemplate.write(output);
//
judgment = 0;
//
}
//
this.close(output);
//
this.close(is);
//
}
public
void
getWord
(
String
path
,
BlockPairBo
blockPairBo
,
String
fileName
,
HttpServletResponse
response
)
throws
Exception
{
ClassPathResource
resource
=
new
ClassPathResource
(
path
);
InputStream
is
=
resource
.
getInputStream
();
String
saveRoute
=
path
.
substring
(
0
,
path
.
lastIndexOf
(
"/"
));
XWPFTemplate
xwpfTemplate
=
XWPFTemplate
.
compile
(
is
);
ByteArrayOutputStream
output
=
new
ByteArrayOutputStream
();
if
(
judgment
==
0
)
{
fileName
=
java
.
net
.
URLDecoder
.
decode
(
fileName
,
CamsConstant
.
UTF_8
);
xwpfTemplate
.
render
(
blockPairBo
).
write
(
output
);
String
pdf
=
fileName
.
substring
(
0
,
fileName
.
lastIndexOf
(
"."
))
+
DateUtil
.
format
(
new
Date
(),
DatePattern
.
PURE_DATETIME_PATTERN
)
+
".pdf"
;
ByteArrayInputStream
input
=
new
ByteArrayInputStream
(
output
.
toByteArray
());
doc2pdf
(
input
,
saveRoute
+
"/"
+
pdf
);
File
file
=
new
File
(
saveRoute
+
"/"
+
pdf
);
//判断文件大小,并压缩
if
(
file
.
length
()
>
WiosConstant
.
FILE_SIZE
)
{
file
.
delete
();
for
(
SurveyDataBo
bo
:
blockPairBo
.
getExperiences
())
{
compressPictures
(
bo
);
}
getWord
(
path
,
blockPairBo
,
fileName
,
response
);
return
;
}
try
{
log
.
info
(
"========================{}下载开始========================"
,
pdf
);
is
=
new
BufferedInputStream
(
new
FileInputStream
(
saveRoute
+
"/"
+
pdf
));
byte
[]
buffer
=
new
byte
[
is
.
available
()];
is
.
read
(
buffer
);
response
.
reset
();
// 设置response的Header
response
.
addHeader
(
"Content-Disposition"
,
"attachment;filename="
+
URLEncoder
.
encode
(
file
.
getName
(),
CamsConstant
.
UTF_8
));
response
.
addHeader
(
"Content-Length"
,
""
+
file
.
length
());
response
.
setContentType
(
"application/octet-stream"
);
response
.
setCharacterEncoding
(
"utf-8"
);
OutputStream
os
=
new
BufferedOutputStream
(
response
.
getOutputStream
());
os
.
write
(
buffer
);
os
.
flush
();
log
.
info
(
"========================{}下载结束========================"
,
pdf
);
//删除缓存文件
file
.
delete
();
}
catch
(
IOException
ex
)
{
log
.
error
(
pdf
+
"下载异常:"
,
ex
);
ex
.
printStackTrace
();
}
}
else
{
fileName
=
java
.
net
.
URLDecoder
.
decode
(
fileName
,
CamsConstant
.
UTF_8
);
output
=
new
ByteArrayOutputStream
();
response
.
setHeader
(
"Content-Disposition"
,
"attachment; filename="
+
fileName
);
xwpfTemplate
.
write
(
output
);
judgment
=
0
;
}
this
.
close
(
output
);
this
.
close
(
is
);
}
/**
* 关闭输入流
...
...
@@ -169,49 +169,49 @@ public class PdfUtil {
* @param wordPath word 的路径 word 的路径
* @param pdfPath pdf 的路径
*/
//
public static void doc2pdf(String wordPath, String pdfPath) {
//
if (getLicense()) {
//
try {
//
long old = System.currentTimeMillis();
//
File file = new File(pdfPath);
//
FileOutputStream os = new FileOutputStream(file);
//
Document doc = new Document(wordPath);
//
//
doc.save(os, 40);
//
long now = System.currentTimeMillis();
//
os.close();
//
log.info("共耗时:" + (double) (now - old) / 1000.0D + "秒");
//
} catch (Exception var9) {
//
var9.printStackTrace();
//
}
//
//
}
//
}
//
public static void doc2pdf(InputStream is, String pdfPath) {
//
if (getLicense()) {
//
try {
//
long old = System.currentTimeMillis();
//
File file = new File(pdfPath);
//
if (!file.getParentFile().exists()) {
//
file.getParentFile().mkdirs();
//
}
//
FileOutputStream os = new FileOutputStream(pdfPath);
//
Document doc = new Document(is);
//
PdfSaveOptions options = new PdfSaveOptions();
//
// 文字和图像压缩
//
options.setExportDocumentStructure(true);
//
options.setTextCompression(PdfTextCompression.FLATE);
//
options.setImageCompression(PdfImageCompression.AUTO);
//
// 接收修订
//
doc.acceptAllRevisions();
//
doc.save(os, options);
//
long now = System.currentTimeMillis();
//
os.close();
//
log.info("共耗时:" + (double) (now - old) / 1000.0D + "秒");
//
} catch (Exception var9) {
//
var9.printStackTrace();
//
}
//
}
//
}
public
static
void
doc2pdf
(
String
wordPath
,
String
pdfPath
)
{
if
(
getLicense
())
{
try
{
long
old
=
System
.
currentTimeMillis
();
File
file
=
new
File
(
pdfPath
);
FileOutputStream
os
=
new
FileOutputStream
(
file
);
Document
doc
=
new
Document
(
wordPath
);
doc
.
save
(
os
,
40
);
long
now
=
System
.
currentTimeMillis
();
os
.
close
();
log
.
info
(
"共耗时:"
+
(
double
)
(
now
-
old
)
/
1000.0
D
+
"秒"
);
}
catch
(
Exception
var9
)
{
var9
.
printStackTrace
();
}
}
}
public
static
void
doc2pdf
(
InputStream
is
,
String
pdfPath
)
{
if
(
getLicense
())
{
try
{
long
old
=
System
.
currentTimeMillis
();
File
file
=
new
File
(
pdfPath
);
if
(!
file
.
getParentFile
().
exists
())
{
file
.
getParentFile
().
mkdirs
();
}
FileOutputStream
os
=
new
FileOutputStream
(
pdfPath
);
Document
doc
=
new
Document
(
is
);
PdfSaveOptions
options
=
new
PdfSaveOptions
();
// 文字和图像压缩
options
.
setExportDocumentStructure
(
true
);
options
.
setTextCompression
(
PdfTextCompression
.
FLATE
);
options
.
setImageCompression
(
PdfImageCompression
.
AUTO
);
// 接收修订
doc
.
acceptAllRevisions
();
doc
.
save
(
os
,
options
);
long
now
=
System
.
currentTimeMillis
();
os
.
close
();
log
.
info
(
"共耗时:"
+
(
double
)
(
now
-
old
)
/
1000.0
D
+
"秒"
);
}
catch
(
Exception
var9
)
{
var9
.
printStackTrace
();
}
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论