Skip to content

Commit 3fa3789

Browse files
author
Nathan McMinn
committed
Finished refactoring PDF manipulation out of actions into service layer
1 parent e909931 commit 3fa3789

17 files changed

+1996
-2621
lines changed

pdf-toolkit-repo/src/main/amp/config/alfresco/messages/pdf-toolkit.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ pdf-delete-page.inplace.display-label=Execute in place
9090

9191
pdf-rotate.title=Rotate PDF Document
9292
pdf-rotate.description=Rotate the pages of this PDF document
93-
pdf-rotate.degrees.display-label=Degrees of rotation
93+
pdf-rotate.degrees.display-label=Degrees of rotation (90, 180, 270)
9494
pdf-rotate.destination-folder.display-label=Destination folder
9595
pdf-rotate.destination-name.display-label=Destination name
9696
pdf-rotate.inplace.display-label=Execute in place

pdf-toolkit-repo/src/main/amp/config/alfresco/module/org.alfresco.extension.pdftoolkit/context/alfresco-pdf-toolkit-context.xml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<property name="serviceRegistry" ref="ServiceRegistry"/>
1111
</bean>
1212

13-
<bean id="org.alfresco.extension.pdf-toolkit-action" abstract="true" parent="action-executer" depends-on="pdftoolkit-messages">
13+
<bean id="org.alfresco.extension.pdf-toolkit-action" abstract="true" parent="action-executer">
1414
<property name="serviceRegistry">
1515
<ref bean="ServiceRegistry" />
1616
</property>
@@ -25,31 +25,31 @@
2525
<!-- pdfsplit -->
2626
<bean id="pdf-split"
2727
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFSplitActionExecuter"
28-
parent="org.alfresco.extension.pdf-toolkit-action">
28+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
2929
</bean>
3030

3131
<!-- pdfappend -->
3232
<bean id="pdf-append"
3333
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFAppendActionExecuter"
34-
parent="org.alfresco.extension.pdf-toolkit-action">
34+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
3535
</bean>
3636

3737
<!-- pdfsplitatapge -->
3838
<bean id="pdf-split-at-page"
3939
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFSplitAtPageActionExecuter"
40-
parent="org.alfresco.extension.pdf-toolkit-action">
40+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
4141
</bean>
4242

4343
<!-- pdfinsertatapge -->
4444
<bean id="pdf-insert-at-page"
4545
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFInsertAtPageActionExecuter"
46-
parent="org.alfresco.extension.pdf-toolkit-action">
46+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
4747
</bean>
4848

4949
<!-- pdfwatermark -->
5050
<bean id="pdf-watermark"
5151
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFWatermarkActionExecuter"
52-
parent="org.alfresco.extension.pdf-toolkit-action">
52+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
5353
<property name="positionConstraint">
5454
<ref bean="pdfc-position"/>
5555
</property>
@@ -73,7 +73,7 @@
7373
<!-- pdfencryption -->
7474
<bean id="pdf-encryption"
7575
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFEncryptionActionExecuter"
76-
parent="org.alfresco.extension.pdf-toolkit-action">
76+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
7777
<property name="encryptionLevelConstraint">
7878
<ref bean="pdfc-encryptionlevel" />
7979
</property>
@@ -85,7 +85,7 @@
8585
<!-- pdfsignature -->
8686
<bean id="pdf-signature"
8787
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFSignatureActionExecuter"
88-
parent="org.alfresco.extension.pdf-toolkit-action">
88+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
8989
<property name="visibilityConstraint">
9090
<ref bean="pdfc-visibility"/>
9191
</property>
@@ -106,13 +106,13 @@
106106
<!-- pdfdelete -->
107107
<bean id="pdf-delete-page"
108108
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFDeletePageActionExecuter"
109-
parent="org.alfresco.extension.pdf-toolkit-action">
109+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
110110
</bean>
111111

112112
<!-- pdfdelete -->
113113
<bean id="pdf-rotate"
114114
class="org.alfresco.extension.pdftoolkit.repo.action.executer.PDFRotateActionExecuter"
115-
parent="org.alfresco.extension.pdf-toolkit-action">
115+
parent="org.alfresco.extension.pdf-toolkit-action" depends-on="pdftoolkit-messages">
116116
</bean>
117117

118118
<!-- Page count web script -->
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package org.alfresco.extension.pdftoolkit.constants;
2+
3+
import com.itextpdf.text.pdf.BaseFont;
4+
5+
public abstract class PDFToolkitConstants
6+
{
7+
8+
public static final String PARAM_POSITION = "position";
9+
public static final String PARAM_LOCATION_X = "location-x";
10+
public static final String PARAM_LOCATION_Y = "location-y";
11+
public static final String PARAM_PAGE = "page";
12+
public static final String PARAM_INPLACE = "inplace";
13+
public static final String PARAM_DESTINATION_FOLDER = "destination-folder";
14+
public static final String PARAM_DESTINATION_NAME = "destination-name";
15+
16+
public static final String PARAM_TARGET_NODE = "target-node";
17+
18+
public static final String PARAM_DELETE_PAGES = "delete-pages";
19+
20+
public static final String PARAM_USER_PASSWORD = "user-password";
21+
public static final String PARAM_OWNER_PASSWORD = "owner-password";
22+
public static final String PARAM_ALLOW_PRINT = "allow-print";
23+
public static final String PARAM_ALLOW_COPY = "allow-copy";
24+
public static final String PARAM_ALLOW_CONTENT_MODIFICATION = "allow-content-modification";
25+
public static final String PARAM_ALLOW_ANNOTATION_MODIFICATION = "allow-annotation-modification";
26+
public static final String PARAM_ALLOW_FORM_FILL = "allow-form-fill";
27+
public static final String PARAM_ALLOW_SCREEN_READER = "allow-screen-reader";
28+
public static final String PARAM_ALLOW_DEGRADED_PRINT = "allow-degraded-print";
29+
public static final String PARAM_ALLOW_ASSEMBLY = "allow-assembly";
30+
public static final String PARAM_ENCRYPTION_LEVEL = "encryption-level";
31+
public static final String PARAM_EXCLUDE_METADATA = "exclude-metadata";
32+
public static final String PARAM_OPTIONS_LEVEL = "level-options";
33+
34+
public static final String PARAM_INSERT_AT_PAGE = "insert-at-page";
35+
public static final String PARAM_INSERT_CONTENT = "insert-content";
36+
37+
public static final String PARAM_DEGREES = "degrees";
38+
39+
public static final String PARAM_PRIVATE_KEY = "private-key";
40+
public static final String PARAM_VISIBILITY = "visibility";
41+
public static final String PARAM_LOCATION = "location";
42+
public static final String PARAM_REASON = "reason";
43+
public static final String PARAM_KEY_PASSWORD = "key-password";
44+
public static final String PARAM_WIDTH = "width";
45+
public static final String PARAM_HEIGHT = "height";
46+
public static final String PARAM_KEY_TYPE = "key-type";
47+
public static final String PARAM_ALIAS = "alias";
48+
public static final String PARAM_STORE_PASSWORD = "store-password";
49+
50+
public static final String PARAM_SPLIT_FREQUENCY = "split-frequency";
51+
52+
public static final String PARAM_SPLIT_AT_PAGE = "split-at-page";
53+
54+
public static final String PARAM_WATERMARK_IMAGE = "watermark-image";
55+
public static final String PARAM_WATERMARK_DEPTH = "watermark-depth";
56+
public static final String PARAM_WATERMARK_TYPE = "watermark-type";
57+
public static final String PARAM_WATERMARK_TEXT = "watermark-text";
58+
public static final String PARAM_WATERMARK_FONT = "watermark-font";
59+
public static final String PARAM_WATERMARK_SIZE = "watermark-size";
60+
61+
public static final String VISIBILITY_HIDDEN = "hidden";
62+
public static final String VISIBILITY_VISIBLE = "visible";
63+
64+
public static final String KEY_TYPE_PKCS12 = "pkcs12";
65+
public static final String KEY_TYPE_DEFAULT = "default";
66+
67+
public static final String DEPTH_UNDER = "under";
68+
public static final String DEPTH_OVER = "over";
69+
70+
public static final String TYPE_IMAGE = "image";
71+
public static final String TYPE_TEXT = "text";
72+
73+
public static final String FONT_OPTION_HELVETICA = BaseFont.HELVETICA;
74+
public static final String FONT_OPTION_COURIER = BaseFont.COURIER;
75+
public static final String FONT_OPTION_TIMES_ROMAN = BaseFont.TIMES_ROMAN;
76+
77+
public static final float PAD = 15;
78+
79+
public static final String PAGE_ALL = "all";
80+
public static final String PAGE_ODD = "odd";
81+
public static final String PAGE_EVEN = "even";
82+
public static final String PAGE_FIRST = "first";
83+
public static final String PAGE_LAST = "last";
84+
85+
public static final String POSITION_CENTER = "center";
86+
public static final String POSITION_TOPLEFT = "topleft";
87+
public static final String POSITION_TOPRIGHT = "topright";
88+
public static final String POSITION_BOTTOMLEFT = "bottomleft";
89+
public static final String POSITION_BOTTOMRIGHT = "bottomright";
90+
public static final String POSITION_MANUAL = "manual";
91+
92+
public static final String FILE_EXTENSION = ".pdf";
93+
public static final String FILE_MIMETYPE = "application/pdf";
94+
public static final String PDF = "pdf";
95+
}

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/form/PDFActionFormFilter.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import java.util.List;
44
import java.util.Map;
55

6-
import org.alfresco.extension.pdftoolkit.repo.action.executer.BasePDFActionExecuter;
6+
import org.alfresco.extension.pdftoolkit.constants.PDFToolkitConstants;
77
import org.alfresco.extension.pdftoolkit.repo.action.executer.PDFWatermarkActionExecuter;
88
import org.alfresco.repo.action.ActionDefinitionImpl;
99
import org.alfresco.repo.forms.Form;
@@ -22,7 +22,7 @@ public class PDFActionFormFilter extends AbstractFilter<Object, ActionFormResult
2222
private static Log logger = LogFactory.getLog(PDFActionFormFilter.class);
2323
private String WATERMARK_IMAGE_FIELD = "assoc_watermark-image_added";
2424
private String DESTINATION_FOLDER_FIELD = "assoc_destination-folder_added";
25-
private String INPLACE_PARAM = "prop_" + BasePDFActionExecuter.PARAM_INPLACE;
25+
private String INPLACE_PARAM = "prop_" + PDFToolkitConstants.PARAM_INPLACE;
2626

2727
private ServiceRegistry serviceRegistry;
2828
private Repository repositoryHelper;

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/BasePDFActionExecuter.java

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

2222
import java.util.List;
2323

24+
import org.alfresco.extension.pdftoolkit.constants.PDFToolkitConstants;
2425
import org.alfresco.extension.pdftoolkit.service.PDFToolkitService;
2526
import org.alfresco.repo.action.ParameterDefinitionImpl;
2627
import org.alfresco.repo.action.executer.ActionExecuterAbstractBase;
@@ -39,7 +40,7 @@ public abstract class BasePDFActionExecuter
3940

4041
//Default number of map entries at creation
4142
protected static final int INITIAL_OPTIONS = 5;
42-
public static final String PARAM_INPLACE = "inplace";
43+
4344

4445
/**
4546
* Set a service registry to use, this will do away with all of the
@@ -69,7 +70,7 @@ public void setCreateNew(boolean createNew)
6970
@Override
7071
protected void addParameterDefinitions(List<ParameterDefinition> paramList)
7172
{
72-
paramList.add(new ParameterDefinitionImpl(PARAM_INPLACE, DataTypeDefinition.BOOLEAN, false, getParamDisplayLabel(PARAM_INPLACE), false));
73+
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_INPLACE, DataTypeDefinition.BOOLEAN, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_INPLACE), false));
7374
}
7475
/**
7576
* @param actionedUponNodeRef

pdf-toolkit-repo/src/main/java/org/alfresco/extension/pdftoolkit/repo/action/executer/BasePDFStampActionExecuter.java

Lines changed: 6 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -18,47 +18,21 @@
1818

1919
package org.alfresco.extension.pdftoolkit.repo.action.executer;
2020

21-
2221
import java.util.HashMap;
2322
import java.util.List;
2423

24+
import org.alfresco.extension.pdftoolkit.constants.PDFToolkitConstants;
2525
import org.alfresco.extension.pdftoolkit.constraints.MapConstraint;
2626
import org.alfresco.repo.action.ParameterDefinitionImpl;
2727
import org.alfresco.service.cmr.action.ParameterDefinition;
2828
import org.alfresco.service.cmr.dictionary.DataTypeDefinition;
2929

30-
import com.itextpdf.text.Image;
31-
import com.itextpdf.text.Rectangle;
32-
33-
34-
public abstract class BasePDFStampActionExecuter
35-
extends BasePDFActionExecuter
30+
public abstract class BasePDFStampActionExecuter extends BasePDFActionExecuter
3631
{
3732

3833
public static HashMap<String, String> pageConstraint = new HashMap<String, String>();
3934
public static HashMap<String, String> positionConstraint = new HashMap<String, String>();
4035

41-
/*
42-
* Page and position constants
43-
*/
44-
public static final String PAGE_ALL = "all";
45-
public static final String PAGE_ODD = "odd";
46-
public static final String PAGE_EVEN = "even";
47-
public static final String PAGE_FIRST = "first";
48-
public static final String PAGE_LAST = "last";
49-
50-
public static final String POSITION_CENTER = "center";
51-
public static final String POSITION_TOPLEFT = "topleft";
52-
public static final String POSITION_TOPRIGHT = "topright";
53-
public static final String POSITION_BOTTOMLEFT = "bottomleft";
54-
public static final String POSITION_BOTTOMRIGHT = "bottomright";
55-
public static final String POSITION_MANUAL = "manual";
56-
57-
public static final String PARAM_POSITION = "position";
58-
public static final String PARAM_LOCATION_X = "location-x";
59-
public static final String PARAM_LOCATION_Y = "location-y";
60-
public static final String PARAM_PAGE = "page";
61-
6236
/**
6337
* Constraints
6438
*/
@@ -67,112 +41,22 @@ public void setPositionConstraint(MapConstraint mc)
6741
positionConstraint.putAll(mc.getAllowableValues());
6842
}
6943

70-
7144
public void setPageConstraint(MapConstraint mc)
7245
{
7346
pageConstraint.putAll(mc.getAllowableValues());
7447
}
7548

76-
7749
/**
7850
* Add parameter definitions
7951
*/
8052
@Override
8153
protected void addParameterDefinitions(List<ParameterDefinition> paramList)
8254
{
83-
paramList.add(new ParameterDefinitionImpl(PARAM_POSITION, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_POSITION), false, "pdfc-position"));
84-
paramList.add(new ParameterDefinitionImpl(PARAM_LOCATION_X, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_LOCATION_X)));
85-
paramList.add(new ParameterDefinitionImpl(PARAM_LOCATION_Y, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_LOCATION_Y)));
86-
paramList.add(new ParameterDefinitionImpl(PARAM_PAGE, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PARAM_PAGE), false));
55+
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_POSITION, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_POSITION), false, "pdfc-position"));
56+
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_LOCATION_X, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_LOCATION_X)));
57+
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_LOCATION_Y, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_LOCATION_Y)));
58+
paramList.add(new ParameterDefinitionImpl(PDFToolkitConstants.PARAM_PAGE, DataTypeDefinition.TEXT, false, getParamDisplayLabel(PDFToolkitConstants.PARAM_PAGE), false));
8759

8860
super.addParameterDefinitions(paramList);
8961
}
90-
91-
92-
/**
93-
* Determines whether or not a watermark should be applied to a given page
94-
*
95-
* @param pages
96-
* @param current
97-
* @param numpages
98-
* @return
99-
*/
100-
protected boolean checkPage(String pages, int current, int numpages)
101-
{
102-
103-
boolean markPage = false;
104-
105-
if (pages.equals(PAGE_EVEN) || pages.equals(PAGE_ODD))
106-
{
107-
if (current % 2 == 0)
108-
{
109-
markPage = true;
110-
}
111-
}
112-
else if (pages.equals(PAGE_ODD))
113-
{
114-
if (current % 2 != 0)
115-
{
116-
markPage = true;
117-
}
118-
}
119-
else if (pages.equals(PAGE_FIRST))
120-
{
121-
if (current == 1)
122-
{
123-
markPage = true;
124-
}
125-
}
126-
else if (pages.equals(PAGE_LAST))
127-
{
128-
if (current == numpages)
129-
{
130-
markPage = true;
131-
}
132-
}
133-
else
134-
{
135-
markPage = true;
136-
}
137-
138-
return markPage;
139-
}
140-
141-
142-
/**
143-
* Gets the X value for centering the watermark image
144-
*
145-
* @param r
146-
* @param img
147-
* @return
148-
*/
149-
protected float getCenterX(Rectangle r, Image img)
150-
{
151-
float x = 0;
152-
float pdfwidth = r.getWidth();
153-
float imgwidth = img.getWidth();
154-
155-
x = (pdfwidth - imgwidth) / 2;
156-
157-
return x;
158-
}
159-
160-
161-
/**
162-
* Gets the Y value for centering the watermark image
163-
*
164-
* @param r
165-
* @param img
166-
* @return
167-
*/
168-
protected float getCenterY(Rectangle r, Image img)
169-
{
170-
float y = 0;
171-
float pdfheight = r.getHeight();
172-
float imgheight = img.getHeight();
173-
174-
y = (pdfheight - imgheight) / 2;
175-
176-
return y;
177-
}
17862
}

0 commit comments

Comments
 (0)