Skip to content
Toggle navigation
Projects
Groups
Snippets
Help
Linnea Samila
/
Moya
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Wiki
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit f7ce60c7
authored
Oct 06, 2012
by
Juho Juopperi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
pdf for usercardservlet
1 parent
71b73b1a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
131 additions
and
17 deletions
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/UserCardServlet.java
code/LanBortalWeb/src/fi/insomnia/bortal/servlet/UserCardServlet.java
View file @
f7ce60c
...
...
@@ -17,6 +17,14 @@ import javax.servlet.http.HttpServletResponse;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
com.pdfjet.Box
;
import
com.pdfjet.CoreFont
;
import
com.pdfjet.Image
;
import
com.pdfjet.ImageType
;
import
com.pdfjet.PDF
;
import
com.pdfjet.Page
;
import
com.pdfjet.TextLine
;
import
fi.insomnia.bortal.beans.CardTemplateBeanLocal
;
import
fi.insomnia.bortal.beans.PermissionBeanLocal
;
import
fi.insomnia.bortal.beans.UserBeanLocal
;
...
...
@@ -51,7 +59,8 @@ public class UserCardServlet extends GenericImageServlet {
@EJB
private
transient
CardTemplateBeanLocal
cardbean
;
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
UserCardServlet
.
class
);
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
UserCardServlet
.
class
);
@Override
protected
ImageMover
getImagedata
()
{
...
...
@@ -63,37 +72,40 @@ public class UserCardServlet extends GenericImageServlet {
if
(
card
!=
null
)
{
if
(!
permbean
.
isCurrentUser
(
card
.
getUser
())
&&
!
permbean
.
hasPermission
(
UserPermission
.
MODIFY
)
&&
!
lhMatcher
.
matcher
(
request
.
getLocalAddr
()).
matches
())
{
&&
!
lhMatcher
.
matcher
(
request
.
getLocalAddr
()).
matches
())
{
ret
.
setResponse
(
HttpServletResponse
.
SC_FORBIDDEN
);
}
else
{
}
else
{
try
{
ret
.
setData
(
mkCard
(
card
));
ret
.
setImagetype
(
"image/jpeg"
);
// ret.setImagetype("image/jpeg");
ret
.
setImagetype
(
"application/pdf"
);
}
catch
(
IOException
e
)
{
ret
.
setResponse
(
HttpServletResponse
.
SC_INTERNAL_SERVER_ERROR
);
}
catch
(
Exception
e
)
{
ret
.
setResponse
(
HttpServletResponse
.
SC_INTERNAL_SERVER_ERROR
);
e
.
printStackTrace
();
}
}
}
else
{
}
else
{
ret
.
setResponse
(
HttpServletResponse
.
SC_NOT_FOUND
);
}
return
ret
;
}
private
byte
[]
mkCard
(
PrintedCard
card
)
throws
IOException
{
private
byte
[]
mkCard
Jpeg
(
PrintedCard
card
)
throws
IOException
{
EventUser
user
=
card
.
getUser
();
BufferedImage
face
=
ImageIO
.
read
(
new
ByteArrayInputStream
(
user
.
getUser
().
getCurrentImage
().
getImageData
()));
BufferedImage
face
=
ImageIO
.
read
(
new
ByteArrayInputStream
(
user
.
getUser
().
getCurrentImage
().
getImageData
()));
BufferedImage
base
=
ImageIO
.
read
(
new
ByteArrayInputStream
(
card
.
getTemplate
().
getImage
()));
BufferedImage
base
=
ImageIO
.
read
(
new
ByteArrayInputStream
(
card
.
getTemplate
().
getImage
()));
BufferedImage
outimage
=
new
BufferedImage
(
base
.
getWidth
(),
base
.
getHeight
(),
BufferedImage
.
TYPE_INT_RGB
);
BufferedImage
outimage
=
new
BufferedImage
(
base
.
getWidth
(),
base
.
getHeight
(),
BufferedImage
.
TYPE_INT_RGB
);
Graphics2D
g
=
outimage
.
createGraphics
();
// g.drawImage(org, AffineTransform.getScaleInstance(0.31, 0.31), null);
...
...
@@ -113,7 +125,8 @@ public class UserCardServlet extends GenericImageServlet {
g
.
setFont
(
new
Font
(
"Century gothic"
,
Font
.
BOLD
,
45
));
StringBuilder
wholeName
=
new
StringBuilder
();
wholeName
.
append
(
user
.
getUser
().
getFirstnames
()).
append
(
" "
).
append
(
user
.
getUser
().
getLastname
());
wholeName
.
append
(
user
.
getUser
().
getFirstnames
()).
append
(
" "
)
.
append
(
user
.
getUser
().
getLastname
());
// g.setFont(new Font("Arial", Font.BOLD, 35));
// g.drawString(name, 595 -
...
...
@@ -125,10 +138,13 @@ public class UserCardServlet extends GenericImageServlet {
g
.
drawString
(
wholeName
.
toString
(),
60
,
865
);
g
.
drawString
(
card
.
getTemplate
().
getName
(),
60
,
915
);
String
barcodeString
=
String
.
valueOf
(
user
.
getUser
().
getCreated
().
getTime
().
getTime
());
String
barcodeString
=
String
.
valueOf
(
user
.
getUser
().
getCreated
()
.
getTime
().
getTime
());
barcodeString
=
barcodeString
.
substring
(
barcodeString
.
length
()
-
12
);
BufferedImage
image
=
ImageIO
.
read
(
BarcodeUtils
.
getBarcodeEAN
(
barcodeString
));
g
.
drawImage
(
image
,
0
,
base
.
getHeight
()
-
120
,
base
.
getWidth
(),
120
,
null
);
BufferedImage
image
=
ImageIO
.
read
(
BarcodeUtils
.
getBarcodeEAN
(
barcodeString
));
g
.
drawImage
(
image
,
0
,
base
.
getHeight
()
-
120
,
base
.
getWidth
(),
120
,
null
);
g
.
dispose
();
...
...
@@ -137,4 +153,102 @@ public class UserCardServlet extends GenericImageServlet {
ImageIO
.
write
(
outimage
,
"jpeg"
,
ostr
);
return
ostr
.
toByteArray
();
}
// 300 dpi, 1016 px pituus, 648 px leveys,
// 85,5 mm x 54,0 mm
private
byte
[]
mkCard
(
PrintedCard
card
)
throws
Exception
{
EventUser
user
=
card
.
getUser
();
BufferedImage
cardBackground
=
ImageIO
.
read
(
new
ByteArrayInputStream
(
card
.
getTemplate
().
getImage
()));
BufferedImage
faceBufferedImage
=
ImageIO
.
read
(
new
ByteArrayInputStream
(
user
.
getUser
().
getCurrentImage
()
.
getImageData
()));
// double[] pageSize = new double[] { cardBackground.getWidth(),
// cardBackground.getHeight() };
ByteArrayOutputStream
outputStream
=
new
ByteArrayOutputStream
();
PDF
pdf
=
new
PDF
(
outputStream
);
pdf
.
setTitle
(
"CARD"
);
double
pagex
=
155.52
;
// 54,0 mm
double
pagey
=
243.84
;
// 85,5 mm
Page
page
=
new
Page
(
pdf
,
new
double
[]
{
pagex
,
pagey
});
// Render background image
Image
templateImage
=
new
Image
(
pdf
,
convertBufferedImageToPng
(
cardBackground
),
ImageType
.
PNG
);
templateImage
.
setPosition
(
0
,
0
);
templateImage
.
scaleBy
(
0.245
);
templateImage
.
drawOn
(
page
);
// Render face image
Image
faceImage
=
new
Image
(
pdf
,
convertBufferedImageToPng
(
faceBufferedImage
),
ImageType
.
PNG
);
faceImage
.
setPosition
(
15.5
,
70.0
);
faceImage
.
scaleBy
(
0.32
);
faceImage
.
drawOn
(
page
);
// Render texts
// Big font for nick
com
.
pdfjet
.
Font
nickFont
=
new
com
.
pdfjet
.
Font
(
pdf
,
CoreFont
.
HELVETICA
);
nickFont
.
setSize
(
16.0
);
// User nick text
TextLine
nickTextLine
=
new
TextLine
(
nickFont
);
nickTextLine
.
setText
(
user
.
getUser
().
getNick
());
nickTextLine
.
setPosition
(
19.0
,
193.0
);
nickTextLine
.
setColor
(
new
double
[]
{
1.0
,
1.0
,
1.0
});
nickTextLine
.
drawOn
(
page
);
// Smaller font
com
.
pdfjet
.
Font
font
=
new
com
.
pdfjet
.
Font
(
pdf
,
CoreFont
.
HELVETICA
);
font
.
setSize
(
10.0
);
// Full name text
String
wholeName
=
user
.
getUser
().
getFirstnames
()
+
" "
+
user
.
getUser
().
getLastname
();
TextLine
wholeNameText
=
new
TextLine
(
font
);
wholeNameText
.
setText
(
wholeName
);
wholeNameText
.
setPosition
(
17.0
,
212.0
);
wholeNameText
.
setColor
(
new
double
[]
{
1.0
,
1.0
,
1.0
});
wholeNameText
.
drawOn
(
page
);
// Role text
TextLine
roleTextLine
=
new
TextLine
(
font
);
roleTextLine
.
setText
(
card
.
getTemplate
().
getName
());
roleTextLine
.
setPosition
(
17.0
,
223.0
);
roleTextLine
.
setColor
(
new
double
[]
{
1.0
,
1.0
,
1.0
});
roleTextLine
.
drawOn
(
page
);
// Barcode
String
barcodeString
=
String
.
valueOf
(
user
.
getUser
().
getCreated
()
.
getTime
().
getTime
());
barcodeString
=
barcodeString
.
substring
(
barcodeString
.
length
()
-
12
);
BufferedImage
barCodeBufferedImage
=
ImageIO
.
read
(
BarcodeUtils
.
getBarcodeEAN
(
barcodeString
));
Image
barCodeImage
=
new
Image
(
pdf
,
convertBufferedImageToPng
(
barCodeBufferedImage
),
ImageType
.
PNG
);
barCodeImage
.
setPosition
(
0.0
,
243.5
);
barCodeImage
.
scaleBy
(
0.7
);
barCodeImage
.
drawOn
(
page
);
// Write out the pdf
pdf
.
flush
();
outputStream
.
close
();
return
outputStream
.
toByteArray
();
}
private
ByteArrayInputStream
convertBufferedImageToPng
(
BufferedImage
img
)
throws
IOException
{
ByteArrayOutputStream
outStream
=
new
ByteArrayOutputStream
();
ImageIO
.
write
(
img
,
"png"
,
outStream
);
outStream
.
close
();
return
new
ByteArrayInputStream
(
outStream
.
toByteArray
());
}
}
Write
Preview
Markdown
is supported
Attach a file
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 post a comment