Skip to content

Commit 8e1d7c5

Browse files
committed
- Update to 2.0.0
- New dpi option for pdf output - Square bracket syntax for freemarker
1 parent d3b3355 commit 8e1d7c5

7 files changed

Lines changed: 49 additions & 34 deletions

File tree

README.md

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,22 +34,25 @@
3434

3535
### Options:
3636
<table>
37-
<tr><td>-csv_charset <arg></td><td>CSV file charset (optional default 'UTF-8')</td></tr>
38-
<tr><td>-csv_extension <arg></td><td>CSV file extesion (optional default '')</td></tr>
39-
<tr><td>-csv_file <arg></td><td>CSV input file (optional, use instead -csv_query)</td></tr>
40-
<tr><td>-csv_folder <arg></td><td>CSV folder path (optional default '.')</td></tr>
41-
<tr><td>-csv_query <arg></td><td>CSV query command (optional, use instead -csv_file)</td></tr>
42-
<tr><td>-csv_separator <arg></td><td>CSV separator character (optional default ';')</td></tr>
37+
<tr><td>-csv_charset &lt;arg&gt;</td><td>CSV file charset (optional, default 'UTF-8')</td></tr>
38+
<tr><td>-csv_extension &lt;arg&gt;</td><td>CSV file extesion (optional, default '')</td></tr>
39+
<tr><td>-csv_file &lt;arg&gt;</td><td>CSV input file (optional, use instead -csv_query)</td></tr>
40+
<tr><td>-csv_folder &lt;arg&gt;</td><td>CSV folder path (optional, default '.')</td></tr>
41+
<tr><td>-csv_query &lt;arg&gt;</td><td>CSV query command (optional, use instead -csv_file)</td></tr>
42+
<tr><td>-csv_separator &lt;arg&gt;</td><td>CSV separator character (optional, default ';')</td></tr>
4343
<tr><td>-for_each</td><td>Generate one file per data record (optional, see notes below)</td></tr>
44-
<tr><td>-ftl_encoding <arg></td><td>FTL input file encoding (optional default 'UTF-8')</td></tr>
45-
<tr><td>-ftl_file <arg></td><td>FTL input file</td></tr>
46-
<tr><td>-pdf <arg></td><td>PDF output file (optional, use instead -txt)</td></tr>
47-
<tr><td>-txt <arg></td><td>TXT output file (optional, use instead -pdf)</td></tr>
48-
<tr><td>-txt_charset <arg></td><td>TXT output file charset (optional default 'UTF-8')</td></tr>
44+
<tr><td>-ftl_encoding &lt;arg&gt;</td><td>FTL input file encoding (optional, default 'UTF-8')</td></tr>
45+
<tr><td>-ftl_file &lt;arg&gt;</td><td>FTL input file</td></tr>
46+
<tr><td>-pdf &lt;arg&gt;</td><td>PDF output file (optional, use instead -txt)</td></tr>
47+
<tr><td>-dpi &lt;arg&gt;</td><td>PDF output file dpi (optional, default 96)</td></tr>
48+
<tr><td>-txt &lt;arg&gt;</td><td>TXT output file (optional, use instead -pdf)</td></tr>
49+
<tr><td>-txt_charset &lt;arg&gt;</td><td>TXT output file charset (optional, default 'UTF-8')</td></tr>
50+
4951
</table>
5052
<br>
5153

5254
### NOTES:<br>
55+
- csv2pdf 2.0.0 and above uses freemarker's square bracket tag syntax and square bracket interpolation syntax.
5356
- Iterate "*rows*" collection inside your template if you are not using the *-for_each* option
5457
- You can use a templated output file name if using the *-for_each* option
5558
- See the examples folder!
@@ -64,6 +67,5 @@
6467

6568

6669
### Any idea, suggestion or comment is always appreciated
67-
![We need your help!](https://www.mememaker.net/api/bucket?path=static/img/memes/full/2019/Mar/3/6/we-need-your-help-to-make-the-magic-happen-127.png)
6870

6971

examples/pdf birthday card/birthday_card.ftl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
</style>
2929
</head>
3030
<body>
31-
<h1>Happy ${age}º birthday ${name}!</h1>
31+
<h1>Happy [= age]º birthday [= name]!</h1>
3232
<div class="greet">Built with csv2pdf!</div>
3333
</body>
3434
</html>

examples/pdf simple catalog/run.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
rm ./*.pdf
2-
java -jar ../../target/csv2pdf.jar -csv_file products.csv -ftl_file template.ftl -pdf catalog.pdf
2+
java -jar ../../target/csv2pdf.jar -csv_file products.csv -ftl_file template.ftl -pdf catalog.pdf -dpi 300

examples/pdf simple catalog/template.ftl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@
2020
</style>
2121
</head>
2222
<body>
23-
<#list rows as row>
24-
<h1>${row.name}</h1>
25-
<img src="images/${row.image}">
26-
<h2>${row.price}</h2>
27-
<#sep><div class="newpage"/></#sep>
28-
</#list>
23+
[#list rows as row]
24+
<h1>[= row.name]</h1>
25+
<img src="images/[= row.image]">
26+
<h2>[= row.price]</h2>
27+
[#sep]<div class="newpage"/>[/#sep]
28+
[/#list]
2929
</body>
3030
</html>
3131

examples/pdf with header and footer/template.ftl

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,18 @@ div.newpage {
6565
</div>
6666
6767
<div class="content">
68-
<#list rows as row>
68+
[#list rows as row]
6969
<table style="text-align:center;margin:auto;font-size:1cm;padding-top:4cm;">
70-
<tr><td colspan=2>${row["SSN"]}</td></tr>
71-
<tr><td>${row["Last name"]}</td><td rowspan="2">${row["Grade"]}</td></tr>
72-
<tr><td>${row["First name"]}</td></tr>
70+
<tr><td colspan=2>[= row["SSN"]]</td></tr>
71+
<tr><td>[= row["Last name"]]</td><td rowspan="2">[= row["Grade"]]</td></tr>
72+
<tr><td>[= row["First name"]]</td></tr>
7373
</table>
7474
<table style="text-align:center;margin:auto;font-size:0.5cm;padding-top:2cm;">
7575
<tr><th>Test1</th><th>Test2</th><th>Test3</th><th>Test4</th><th>Final</th></tr>
76-
<tr><td>${row.Test1}</td><td>${row.Test2}</td><td>${row.Test3}</td><td>${row.Test4}</td><td>${row.Final}</td></tr>
76+
<tr><td>[= row.Test1]</td><td>[= row.Test2]</td><td>[= row.Test3]</td><td>[= row.Test4]</td><td>[= row.Final]</td></tr>
7777
</table>
78-
<#sep><div class="newpage"/></#sep>
79-
</#list>
78+
[#sep]<div class="newpage"/>[/#sep]
79+
[/#list]
8080
</div>
8181
8282
</body>

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>csv2pdf</groupId>
88
<artifactId>csv2pdf</artifactId>
9-
<version>1.0.3</version>
9+
<version>2.0.0</version>
1010

1111
<name>csv2pdf</name>
1212

@@ -30,12 +30,12 @@
3030
<dependency>
3131
<groupId>org.freemarker</groupId>
3232
<artifactId>freemarker</artifactId>
33-
<version>2.3.31</version>
33+
<version>2.3.32</version>
3434
</dependency>
3535
<dependency>
3636
<groupId>org.jsoup</groupId>
3737
<artifactId>jsoup</artifactId>
38-
<version>1.15.3</version>
38+
<version>1.16.1</version>
3939
</dependency>
4040
<dependency>
4141
<groupId>org.xhtmlrenderer</groupId>

src/main/java/csv2pdf/App.java

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public static void main(String[] args) throws ClassNotFoundException, SQLExcepti
6060
System.out.println("| / /__(__ )| |/ / __// /_/ / /_/ / __/ |");
6161
System.out.println("| \\___/____/ |___/____/ .___/\\__,_/_/ |");
6262
System.out.println("| /_/ |");
63-
System.out.println("| v.1.0.3 |");
63+
System.out.println("| v.2.0.0 |");
6464
System.out.println("·------------------------------------------·");
6565

6666
Options options = new Options();
@@ -71,7 +71,7 @@ public static void main(String[] args) throws ClassNotFoundException, SQLExcepti
7171
Option csvSeparatorOption = new Option("csv_separator", true, "CSV separator character (optional default ';')");
7272
csvSeparatorOption.setRequired(false);
7373

74-
Option csvExtensionOption = new Option("csv_extension", true, "CSV file extesion (optional default '')");
74+
Option csvExtensionOption = new Option("csv_extension", true, "CSV file extension (optional default '')");
7575
csvExtensionOption.setRequired(false);
7676

7777
Option csvCharsetOption = new Option("csv_charset", true, "CSV file charset (optional default 'UTF-8')");
@@ -92,6 +92,9 @@ public static void main(String[] args) throws ClassNotFoundException, SQLExcepti
9292
Option pdfOption = new Option("pdf", true, "PDF output file (optional, use instead -txt)");
9393
pdfOption.setRequired(false);
9494

95+
Option dpiOption = new Option("dpi", true, "PDF output file dpi");
96+
dpiOption.setRequired(false);
97+
9598
Option txtOption = new Option("txt", true, "TXT output file (optional, use instead -pdf)");
9699
txtOption.setRequired(false);
97100

@@ -110,6 +113,7 @@ public static void main(String[] args) throws ClassNotFoundException, SQLExcepti
110113
options.addOption(ftlFileOption);
111114
options.addOption(ftlEncodingOption);
112115
options.addOption(pdfOption);
116+
options.addOption(dpiOption);
113117
options.addOption(txtOption);
114118
options.addOption(txtCharsetOption);
115119
options.addOption(eachOption);
@@ -130,11 +134,20 @@ public static void main(String[] args) throws ClassNotFoundException, SQLExcepti
130134

131135
String ftlFile = cmd.getOptionValue("ftl_file");
132136
String ftlEncoding = cmd.getOptionValue("ftl_encoding", "UTF-8");
133-
Configuration cfg = new Configuration(Configuration.VERSION_2_3_30);
137+
Configuration cfg = new Configuration(Configuration.VERSION_2_3_32);
134138
cfg.setDirectoryForTemplateLoading(FileSystems.getDefault().getPath(".").toFile());
135139
cfg.setDefaultEncoding(ftlEncoding);
140+
cfg.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX);
141+
cfg.setInterpolationSyntax(Configuration.SQUARE_BRACKET_INTERPOLATION_SYNTAX);
136142
Template template = cfg.getTemplate(ftlFile);
137-
ITextRenderer renderer = cmd.hasOption("pdf") ? new ITextRenderer() : null;
143+
ITextRenderer renderer = null;
144+
145+
if (cmd.hasOption("pdf")) {
146+
int dpi = Integer.parseInt(cmd.getOptionValue("dpi","96"));
147+
float dotsPerPoint = ((float) dpi / 72.0f);
148+
int dotsPerPixel = 1;
149+
renderer = new ITextRenderer(dotsPerPoint,dotsPerPixel);
150+
}
138151

139152
if (cmd.hasOption("for_each")) {
140153
for (HashMap<String, Object> row : rows) {

0 commit comments

Comments
 (0)