📄 pdfsurveyservices.java
字号:
surveyQuestionAppl.set("sequenceNum", sequenceNum); } surveyQuestion.create(); surveyQuestionAppl.create(); } pdfStamper.close(); if (UtilValidate.isNotEmpty(contentId)) { survey = delegator.findByPrimaryKey("Survey", UtilMisc.toMap("surveyId", surveyId)); survey.set("acroFormContentId", contentId); survey.store(); } } catch (GenericEntityException e) { String errMsg = "Error generating PDF: " + e.toString(); Debug.logError(e, errMsg, module); return ServiceUtil.returnError(errMsg); } catch(GeneralException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch (Exception e) { String errMsg = "Error generating PDF: " + e.toString(); Debug.logError(e, errMsg, module); return ServiceUtil.returnError(errMsg); } Map results = ServiceUtil.returnSuccess(); results.put("surveyId", surveyId); return results; } /** * */ public static Map buildSurveyResponseFromPdf(DispatchContext dctx, Map context) { String surveyResponseId = null; try { GenericDelegator delegator = dctx.getDelegator(); String partyId = (String)context.get("partyId"); String surveyId = (String)context.get("surveyId"); //String contentId = (String)context.get("contentId"); surveyResponseId = (String)context.get("surveyResponseId"); if (UtilValidate.isNotEmpty(surveyResponseId)) { GenericValue surveyResponse = delegator.findByPrimaryKey("SurveyResponse", UtilMisc.toMap("surveyResponseId", surveyResponseId)); if (surveyResponse != null) { surveyId = surveyResponse.getString("surveyId"); } } else { surveyResponseId = delegator.getNextSeqId("SurveyResponse"); GenericValue surveyResponse = delegator.makeValue("SurveyResponse", UtilMisc.toMap("surveyResponseId", surveyResponseId, "surveyId", surveyId, "partyId", partyId)); surveyResponse.set("responseDate", UtilDateTime.nowTimestamp()); surveyResponse.set("lastModifiedDate", UtilDateTime.nowTimestamp()); surveyResponse.create(); } ByteArrayOutputStream os = new ByteArrayOutputStream(); ByteWrapper byteWrapper = getInputByteWrapper(context, delegator); PdfReader r = new PdfReader(byteWrapper.getBytes()); PdfStamper s = new PdfStamper(r,os); AcroFields fs = s.getAcroFields(); HashMap hm = fs.getFields(); s.setFormFlattening(true); Iterator i = hm.keySet().iterator(); while (i.hasNext()) { String fieldName = (String)i.next(); //AcroFields.Item item = fs.getFieldItem(fieldName); //int type = fs.getFieldType(fieldName); String value = fs.getField(fieldName); List questions = delegator.findByAnd("SurveyQuestionAndAppl", UtilMisc.toMap("surveyId", surveyId, "externalFieldRef", fieldName)); if (questions.size() == 0 ) { Debug.logInfo("No question found for surveyId:" + surveyId + " and externalFieldRef:" + fieldName, module); continue; } GenericValue surveyQuestionAndAppl = (GenericValue)questions.get(0); String surveyQuestionId = (String)surveyQuestionAndAppl.get("surveyQuestionId"); String surveyQuestionTypeId = (String)surveyQuestionAndAppl.get("surveyQuestionTypeId"); GenericValue surveyResponseAnswer = delegator.makeValue("SurveyResponseAnswer", UtilMisc.toMap("surveyResponseId", surveyResponseId, "surveyQuestionId", surveyQuestionId)); if (surveyQuestionTypeId ==null || surveyQuestionTypeId.equals("TEXT_SHORT")) { surveyResponseAnswer.set("textResponse", value); } delegator.create(surveyResponseAnswer); } s.close(); } catch (GenericEntityException e) { String errMsg = "Error generating PDF: " + e.toString(); Debug.logError(e, errMsg, module); return ServiceUtil.returnError(errMsg); } catch(GeneralException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch (Exception e) { String errMsg = "Error generating PDF: " + e.toString(); Debug.logError(e, errMsg, module); return ServiceUtil.returnError(errMsg); } Map results = ServiceUtil.returnSuccess(); results.put("surveyResponseId", surveyResponseId); return results; } /** */ public static Map getAcroFieldsFromPdf(DispatchContext dctx, Map context) { Map acroFieldMap = new HashMap(); try { ByteArrayOutputStream os = new ByteArrayOutputStream(); GenericDelegator delegator = dctx.getDelegator(); ByteWrapper byteWrapper = getInputByteWrapper(context, delegator); PdfReader r = new PdfReader(byteWrapper.getBytes()); PdfStamper s = new PdfStamper(r,os); AcroFields fs = s.getAcroFields(); HashMap map = fs.getFields(); s.setFormFlattening(true); // Debug code to get the values for setting TDP // String[] sa = fs.getAppearanceStates("TDP"); // for (int i=0;i<sa.length;i++) // Debug.log("Appearance="+sa[i]); Iterator iter = map.keySet().iterator(); while (iter.hasNext()) { String fieldName=(String)iter.next(); String parmValue = fs.getField(fieldName); acroFieldMap.put(fieldName, parmValue); } } catch(DocumentException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch(GeneralException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch(IOException ioe) { System.err.println(ioe.getMessage()); ServiceUtil.returnError(ioe.getMessage()); } Map results = ServiceUtil.returnSuccess(); results.put("acroFieldMap", acroFieldMap); return results; } /** */ public static Map setAcroFields(DispatchContext dctx, Map context) { Map results = ServiceUtil.returnSuccess(); GenericDelegator delegator = dctx.getDelegator(); try { Map acroFieldMap = (Map)context.get("acroFieldMap"); ByteWrapper byteWrapper = getInputByteWrapper(context, delegator); PdfReader r = new PdfReader(byteWrapper.getBytes()); ByteArrayOutputStream baos = new ByteArrayOutputStream(); PdfStamper s = new PdfStamper(r, baos); AcroFields fs = s.getAcroFields(); Map map = fs.getFields(); s.setFormFlattening(true); // Debug code to get the values for setting TDP // String[] sa = fs.getAppearanceStates("TDP"); // for (int i=0;i<sa.length;i++) // Debug.log("Appearance="+sa[i]); Iterator iter = map.keySet().iterator(); while (iter.hasNext()) { String fieldName=(String)iter.next(); String fieldValue = fs.getField(fieldName); Object obj = acroFieldMap.get(fieldName); if (obj instanceof Date) { Date d=(Date)obj; fieldValue=UtilDateTime.toDateString(d); } else if (obj instanceof Long) { Long lg=(Long)obj; fieldValue=lg.toString(); } else if (obj instanceof Integer) { Integer ii=(Integer)obj; fieldValue=ii.toString(); } else { fieldValue=(String)obj; } if (UtilValidate.isNotEmpty(fieldValue)) fs.setField(fieldName, fieldValue); } s.close(); baos.close(); ByteWrapper outByteWrapper = new ByteWrapper(baos.toByteArray()); results.put("outByteWrapper", outByteWrapper); } catch(DocumentException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch(GeneralException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch(FileNotFoundException e) { System.err.println(e.getMessage()); ServiceUtil.returnError(e.getMessage()); } catch(IOException ioe) { System.err.println(ioe.getMessage()); ServiceUtil.returnError(ioe.getMessage()); } catch(Exception ioe) { System.err.println(ioe.getMessage());
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -