SHOW:
|
|
- or go back to the newest paste.
1 | package homework; | |
2 | ||
3 | import java.awt.Color; | |
4 | import java.io.*; | |
5 | ||
6 | import com.lowagie.text.*; | |
7 | import com.lowagie.text.pdf.*; | |
8 | ||
9 | public class GeneratePDF { | |
10 | public static void main(String[] args) throws IOException, DocumentException { | |
11 | char[] suits = new char[] { | |
12 | '\u2660', '\u2665', '\u2666', '\u2663' | |
13 | }; | |
14 | String[] ranks = new String[] { | |
15 | "2", "3", "4", "5", "6", "7", "8", | |
16 | "9", "10", "J", "Q", "K", "A" | |
17 | }; | |
18 | ||
19 | File file = new File("deck.pdf"); | |
20 | Document pdf = new Document(); | |
21 | PdfWriter writer = PdfWriter.getInstance(pdf, new FileOutputStream(file)); | |
22 | pdf.open(); | |
23 | PdfContentByte cb = writer.getDirectContent(); | |
24 | BaseFont baseFont = BaseFont.createFont("DejaVuSansMono.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED); | |
25 | Font font = new Font(baseFont, 16); | |
26 | float fontSize = font.getCalculatedSize(); | |
27 | float offset = fontSize / 2F; | |
28 | ||
29 | float width = fontSize * 2F; | |
30 | float height = fontSize * 3F; | |
31 | float lowerLeftX = offset; | |
32 | float topRightY = pdf.getPageSize().getTop() - offset; | |
33 | ||
34 | for (String rank : ranks) { | |
35 | for (int i = 0; i < suits.length; ++i) { | |
36 | font.setColor((i == 0 || i == suits.length - 1) ? Color.BLACK : Color.RED); | |
37 | ||
38 | DrawCardInRect(new Rectangle(lowerLeftX, topRightY - height, lowerLeftX + width, topRightY), | |
39 | rank, suits[i], cb, font); | |
40 | ||
41 | - | lowerLeftX += width + offset; |
41 | + | lowerLeftX += width + offset; |
42 | } | |
43 | topRightY -= height + offset; | |
44 | lowerLeftX = offset; | |
45 | ||
46 | } | |
47 | ||
48 | pdf.close(); | |
49 | } | |
50 | ||
51 | private static void DrawCardInRect(Rectangle rect, String rank, char suit, PdfContentByte cb, Font font) { | |
52 | String text = rank + suit; | |
53 | Phrase phrase = new Phrase(text, font); | |
54 | ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, phrase, | |
55 | (rect.getLeft() + rect.getRight()) / 2, | |
56 | rect.getBottom() + rect.getHeight() / 2 - font.getCalculatedSize() / 2, | |
57 | 0); | |
58 | cb.saveState(); | |
59 | cb.setColorStroke(Color.BLACK); | |
60 | cb.rectangle(rect.getLeft(), rect.getBottom(), rect.getWidth(), rect.getHeight()); | |
61 | cb.stroke(); | |
62 | cb.restoreState(); | |
63 | } | |
64 | } |