diff --git a/src/main/java/org/codelibs/fess/Constants.java b/src/main/java/org/codelibs/fess/Constants.java
index 18ec21f5ffe453edc6cd7a130d86b4227280200d..e1b693026374827ea7bd672b0cb0c3c333985822 100644
--- a/src/main/java/org/codelibs/fess/Constants.java
+++ b/src/main/java/org/codelibs/fess/Constants.java
@@ -402,6 +402,8 @@ public class Constants extends CoreLibConstants {
 
     public static final String MAPPING_TYPE_DATE = "date";
 
+    public static final String MAPPING_TYPE_PDF_DATE = "pdf_date";
+
     public static final String PAGING_QUERY_LIST = "pagingQueryList";
 
     public static final String REQUEST_LANGUAGES = "requestLanguages";
diff --git a/src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java b/src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java
index 3367ff2c8e9ecc4bb95074a1fb5d2f3a4b6fb324..f06f92fb1c8eaca2154f6f166149a10b988577c3 100644
--- a/src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java
+++ b/src/main/java/org/codelibs/fess/crawler/transformer/AbstractFessFileTransformer.java
@@ -138,11 +138,17 @@ public abstract class AbstractFessFileTransformer extends AbstractTransformer im
                                             dataMap.put(mapping.getValue1(), Long.parseLong(values[0]));
                                         } else if (Constants.MAPPING_TYPE_DOUBLE.equalsIgnoreCase(mapping.getValue2())) {
                                             dataMap.put(mapping.getValue1(), Double.parseDouble(values[0]));
-                                        } else if (Constants.MAPPING_TYPE_DATE.equalsIgnoreCase(mapping.getValue2())) {
-                                            final Date dt =
-                                                    FessFunctions.parseDate(values[0],
-                                                            StringUtil.isNotBlank(mapping.getValue3()) ? mapping.getValue3()
-                                                                    : Constants.DATE_OPTIONAL_TIME);
+                                        } else if (Constants.MAPPING_TYPE_DATE.equalsIgnoreCase(mapping.getValue2())
+                                                || Constants.MAPPING_TYPE_PDF_DATE.equalsIgnoreCase(mapping.getValue2())) {
+                                            final String dateFormate;
+                                            if (StringUtil.isNotBlank(mapping.getValue3())) {
+                                                dateFormate = mapping.getValue3();
+                                            } else if (Constants.MAPPING_TYPE_PDF_DATE.equalsIgnoreCase(mapping.getValue2())) {
+                                                dateFormate = mapping.getValue2();
+                                            } else {
+                                                dateFormate = Constants.DATE_OPTIONAL_TIME;
+                                            }
+                                            final Date dt = FessFunctions.parseDate(values[0], dateFormate);
                                             if (dt != null) {
                                                 dataMap.put(mapping.getValue1(), FessFunctions.formatDate(dt));
                                             } else {