Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
chuanshan_gov_platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
廖旭伟
chuanshan_gov_platform
Commits
ca401b5a
Commit
ca401b5a
authored
Mar 13, 2023
by
廖旭伟
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
纠错管理bug修改
parent
17b02d87
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
267 additions
and
1 deletion
+267
-1
knowledge-base/pom.xml
knowledge-base/pom.xml
+12
-0
knowledge-base/src/main/java/com/mortals/xhx/common/utils/WordUtil.java
.../src/main/java/com/mortals/xhx/common/utils/WordUtil.java
+255
-0
knowledge-base/src/main/java/com/mortals/xhx/module/matter/service/impl/MatterDatumFileServiceImpl.java
...odule/matter/service/impl/MatterDatumFileServiceImpl.java
+0
-1
No files found.
knowledge-base/pom.xml
View file @
ca401b5a
...
@@ -173,6 +173,18 @@
...
@@ -173,6 +173,18 @@
<version>
2.11.0
</version>
<version>
2.11.0
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.aspose.words
</groupId>
<artifactId>
aspose-words
</artifactId>
<version>
19.2
</version>
<classifier>
jdk16
</classifier>
</dependency>
<dependency>
<groupId>
org.apache.pdfbox
</groupId>
<artifactId>
pdfbox
</artifactId>
<version>
2.0.27
</version>
</dependency>
<dependency>
<dependency>
<groupId>
junit
</groupId>
<groupId>
junit
</groupId>
...
...
knowledge-base/src/main/java/com/mortals/xhx/common/utils/WordUtil.java
0 → 100644
View file @
ca401b5a
package
com.mortals.xhx.common.utils
;
/**
* @author: zxfei
* @date: 2021/10/14 15:44
* @description:
**/
import
com.aspose.words.Document
;
import
com.aspose.words.ImageSaveOptions
;
import
com.aspose.words.SaveFormat
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.util.DateUtils
;
import
freemarker.template.Configuration
;
import
freemarker.template.Template
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.pdfbox.pdmodel.PDDocument
;
import
org.apache.pdfbox.rendering.PDFRenderer
;
import
javax.imageio.ImageIO
;
import
javax.imageio.stream.ImageInputStream
;
import
java.awt.*
;
import
java.awt.image.BufferedImage
;
import
java.io.*
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.Map
;
@Slf4j
public
class
WordUtil
{
private
Configuration
configure
=
null
;
public
Configuration
getConfigure
()
{
return
configure
;
}
public
void
setConfigure
(
Configuration
configure
)
{
this
.
configure
=
configure
;
}
public
WordUtil
()
{
configure
=
new
Configuration
();
configure
.
setDefaultEncoding
(
"utf-8"
);
}
/**
* 根据word模板生成word文件
*
* @param dataMap : 数据
* @param outFilePath : 输出word文件地址
* @return
*/
public
boolean
createWord
(
Map
<
String
,
Object
>
dataMap
,
String
inputFilePath
,
String
outFilePath
)
{
boolean
flag
=
false
;
try
{
// 指定路径方式(根据某个类的相对路径指定)
configure
.
setClassForTemplateLoading
(
this
.
getClass
(),
"/test"
);
// 以utf-8的编码读取ftl文件
Template
template
=
configure
.
getTemplate
(
inputFilePath
,
"utf-8"
);
Writer
out
=
new
BufferedWriter
(
new
OutputStreamWriter
(
new
FileOutputStream
(
new
File
(
outFilePath
)),
"utf-8"
),
10240
);
template
.
process
(
dataMap
,
out
);
out
.
close
();
flag
=
true
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
return
flag
;
}
public
static
String
convertWordToJPEG
(
String
inputFile
,
String
jpegPath
)
{
try
{
log
.
info
(
"word to jpg文件转换开始,inputFile:{},jepgPath:{}:{}"
,
inputFile
,
jpegPath
,
DateUtils
.
getCurrStrDateTime
());
// 转换开始前时间
long
old
=
System
.
currentTimeMillis
();
// 新建的PDF文件路径
File
file
=
new
File
(
jpegPath
);
//FileOutputStream os = new FileOutputStream(file);
// 要转换的word文档的路径
Document
doc
=
new
Document
(
inputFile
);
// 全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF, EPUB, XPS, SWF 相互转换
//doc.save(os, SaveFormat.JPEG);
ImageSaveOptions
options
=
new
ImageSaveOptions
(
SaveFormat
.
JPEG
);
options
.
setPrettyFormat
(
true
);
options
.
setUseAntiAliasing
(
true
);
options
.
setUseHighQualityRendering
(
true
);
int
pageCount
=
doc
.
getPageCount
();
List
<
BufferedImage
>
imageList
=
new
ArrayList
<
BufferedImage
>();
for
(
int
i
=
0
;
i
<
pageCount
;
i
++)
{
OutputStream
output
=
new
ByteArrayOutputStream
();
options
.
setPageIndex
(
i
);
doc
.
save
(
output
,
options
);
ImageInputStream
imageInputStream
=
ImageIO
.
createImageInputStream
(
parse
(
output
));
imageList
.
add
(
ImageIO
.
read
(
imageInputStream
));
}
BufferedImage
mergeImage
=
mergeImage
(
false
,
imageList
);
ImageIO
.
write
(
mergeImage
,
"jpg"
,
file
);
// 转换结束后时间
/* doc.save(jpegPath);*/
doc
.
cleanup
();
long
now
=
System
.
currentTimeMillis
();
log
.
info
(
"文件转换结束,共耗时:"
+
((
now
-
old
)
/
1000.0
)
+
"秒"
);
return
jpegPath
;
}
catch
(
Exception
e
)
{
log
.
error
(
"文件转换异常!"
,
e
);
throw
new
AppException
(
String
.
format
(
"文件转换异常! %s"
,
e
.
getMessage
()));
}
}
public
static
Integer
getPageByDoc
(
String
inputFile
)
{
try
{
//FileOutputStream os = new FileOutputStream(file);
// 要转换的word文档的路径
Document
doc
=
new
Document
(
inputFile
);
return
doc
.
getPageCount
();
}
catch
(
Exception
e
)
{
log
.
error
(
"获取doc异常!"
,
e
);
return
0
;
}
}
public
static
void
pdfToImages
(
String
filePath
,
String
jpegPath
)
{
log
.
info
(
String
.
format
(
"pdf to images文件转换开始:%s"
,
DateUtils
.
getCurrStrDateTime
()));
// 转换开始前时间
long
old
=
System
.
currentTimeMillis
();
File
file
=
new
File
(
jpegPath
);
List
<
BufferedImage
>
imageInfoList
=
new
ArrayList
<>();
try
(
PDDocument
doc
=
PDDocument
.
load
(
new
File
(
filePath
)))
{
PDFRenderer
renderer
=
new
PDFRenderer
(
doc
);
int
pageCount
=
doc
.
getNumberOfPages
();
for
(
int
i
=
0
;
i
<
pageCount
;
i
++)
{
BufferedImage
image
=
renderer
.
renderImage
(
i
);
imageInfoList
.
add
(
image
);
}
BufferedImage
mergeImage
=
mergeImage
(
false
,
imageInfoList
);
ImageIO
.
write
(
mergeImage
,
"png"
,
file
);
// 转换结束后时间
long
now
=
System
.
currentTimeMillis
();
//os.close();
log
.
info
(
"文件转换结束,共耗时:"
+
((
now
-
old
)
/
1000.0
)
+
"秒"
);
}
catch
(
IOException
e
)
{
log
.
error
(
"生成预览图片异常:"
,
e
);
throw
new
AppException
(
"生成预览图片异常"
);
}
}
/**
* 合并任数量的图片成一张图片
*
* @param isHorizontal true代表水平合并,fasle代表垂直合并
* @param imgs 待合并的图片数组
* @return
* @throws IOException
*/
public
static
BufferedImage
mergeImage
(
boolean
isHorizontal
,
List
<
BufferedImage
>
imgs
)
throws
IOException
{
// 生成新图片
BufferedImage
destImage
=
null
;
// 计算新图片的长和高
int
allw
=
0
,
allh
=
0
,
allwMax
=
0
,
allhMax
=
0
;
// 获取总长、总宽、最长、最宽
for
(
int
i
=
0
;
i
<
imgs
.
size
();
i
++)
{
BufferedImage
img
=
imgs
.
get
(
i
);
allw
+=
img
.
getWidth
();
if
(
imgs
.
size
()
!=
i
+
1
)
{
allh
+=
img
.
getHeight
()
+
5
;
}
else
{
allh
+=
img
.
getHeight
();
}
if
(
img
.
getWidth
()
>
allwMax
)
{
allwMax
=
img
.
getWidth
();
}
if
(
img
.
getHeight
()
>
allhMax
)
{
allhMax
=
img
.
getHeight
();
}
}
// 创建新图片
if
(
isHorizontal
)
{
destImage
=
new
BufferedImage
(
allw
,
allhMax
,
BufferedImage
.
TYPE_INT_RGB
);
}
else
{
destImage
=
new
BufferedImage
(
allwMax
,
allh
,
BufferedImage
.
TYPE_INT_RGB
);
}
Graphics2D
g2
=
(
Graphics2D
)
destImage
.
getGraphics
();
g2
.
setBackground
(
Color
.
LIGHT_GRAY
);
g2
.
clearRect
(
0
,
0
,
allw
,
allh
);
g2
.
setPaint
(
Color
.
RED
);
// 合并所有子图片到新图片
int
wx
=
0
,
wy
=
0
;
for
(
int
i
=
0
;
i
<
imgs
.
size
();
i
++)
{
BufferedImage
img
=
imgs
.
get
(
i
);
int
w1
=
img
.
getWidth
();
int
h1
=
img
.
getHeight
();
// 从图片中读取RGB
int
[]
ImageArrayOne
=
new
int
[
w1
*
h1
];
// 逐行扫描图像中各个像素的RGB到数组中
ImageArrayOne
=
img
.
getRGB
(
0
,
0
,
w1
,
h1
,
ImageArrayOne
,
0
,
w1
);
if
(
isHorizontal
)
{
// 水平方向合并
// 设置上半部分或左半部分的RGB
destImage
.
setRGB
(
wx
,
0
,
w1
,
h1
,
ImageArrayOne
,
0
,
w1
);
}
else
{
// 垂直方向合并
// 设置上半部分或左半部分的RGB
destImage
.
setRGB
(
0
,
wy
,
w1
,
h1
,
ImageArrayOne
,
0
,
w1
);
}
wx
+=
w1
;
wy
+=
h1
+
5
;
}
return
destImage
;
}
public
static
ByteArrayInputStream
parse
(
OutputStream
out
)
throws
Exception
{
ByteArrayOutputStream
baos
=
new
ByteArrayOutputStream
();
baos
=
(
ByteArrayOutputStream
)
out
;
ByteArrayInputStream
swapStream
=
new
ByteArrayInputStream
(
baos
.
toByteArray
());
return
swapStream
;
}
public
static
void
main
(
String
[]
args
)
{
String
docPath
=
"E:\\pic\\doc\\2.docx"
;
String
jpgPath
=
"E:\\pic\\doc\\2.jpg"
;
WordUtil
.
convertWordToJPEG
(
docPath
,
jpgPath
);
/*
String pdfPath = "E:\\pic\\pdf\\1.pdf";
String jpgPath = "E:\\pic\\jpg\\1.jpg";
WordUtil.pdfToImages(pdfPath, jpgPath);
*/
}
}
knowledge-base/src/main/java/com/mortals/xhx/module/matter/service/impl/MatterDatumFileServiceImpl.java
View file @
ca401b5a
...
@@ -2,7 +2,6 @@ package com.mortals.xhx.module.matter.service.impl;
...
@@ -2,7 +2,6 @@ package com.mortals.xhx.module.matter.service.impl;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.io.FileUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
cn.hutool.core.util.RandomUtil
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.framework.exception.AppException
;
import
com.mortals.xhx.common.utils.HttpDownloadUtil
;
import
com.mortals.xhx.common.utils.WordUtil
;
import
com.mortals.xhx.common.utils.WordUtil
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment