2015-01-25 13 views
0

Adobe Acrobat에서 '웹 링크 작업 열기'를 추가하여 acroform 할 수 있습니다. iText가 기존의 acroform을 사용하여 그렇게 할 수 있습니까?iText를 사용하여 프로그래밍 방식으로 입력란에 '웹 링크 동작 열기'동작을 추가 할 수 있습니까?

iText docs에서 이에 대한 언급을 찾을 수 없으므로 새로운 acrofield를 프로그래밍 방식으로 만들고이 동작을 성공에 추가하려고 시도했습니다. 여기 내 코드 :

PdfReader pdfReader = new PdfReader(templateStream); 
     PdfStamper stamper = new PdfStamper(pdfReader, new FileOutputStream("delivery.pdf")); 
     stamper.setFormFlattening(true); 
     stamper.getAcroFields().setField("package", packages); 
     stamper.getAcroFields().setField("purchase_id", purchaseId); 
     stamper.getAcroFields().setField("activation_code", activationCode); 
     if (partner != "") { 
      PdfFormField field = PdfFormField.createTextField(stamper.getWriter(), false, 
        false, 100); 
      field.setFieldName("partner"); 
      PdfAction action = new PdfAction(partner); 
      field.setAction(action); 
      field.setColor(new BaseColor(0,0,255)); 
      PdfAppearance appearance = stamper.getUnderContent(1). 
        createAppearance(200, 20); 
      appearance.setFontAndSize(BaseFont.createFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.NOT_EMBEDDED), 12f); 
      appearance.setColorFill(BaseColor.BLUE); 
      field.setAppearance(PdfAnnotation.APPEARANCE_DOWN, appearance); 
      field.setDefaultAppearanceString(appearance); 
      stamper.getAcroFields().setField("partner", "Click here to show partner's web site"); 
     } 

결과 PDF 문서는 파트너 필드없이 표시됩니다. 어떤 문서를 가르키거나 제 코드를 잘못 읽으십시오.

답변

1

양식에 상호 작용 기능을 추가하려고합니다. 그러나 다음 줄을 사용하여 모든 대화 형 기능을 제거하고 있습니다.

stamper.setFormFlattening(true); 

또한 추가 필드를 추가한다고 주장하는 경우도 있습니다. 내가 볼 수있는 한, 그 주장은 거짓이다. 필드 이름을 field (그리고 당신은 어려운 방법으로 만들고, TextField 클래스를 대신 사용하는 것이 좋습니다). 그러나 나는 그 필드를 어디에도 추가하지 않는다.

stamper.getAcroFields().setField("partner", "Click here to show partner's web site"); 

당신이 먼저 필드를 만들 것입니다 이유는 (아마도 및 캡션을 추가)하고 이후에 즉시 변경이 줄을 감각하지 않는

stamper.addAnnotation(field, 1); 

참고 : 나는 다음과 같은 라인을 그리워 ? 왜 처음부터 필드를 올바르게 만들지 않습니까?

마지막으로, 사람들이 클릭 할 수있는 버튼을 만들고 싶습니다. 그런데 왜 텍스트 필드를 만드나요? 푸시 버튼을 만드는 것이 더 합리적이지 않습니까?

다음은 기계가 응답하는 질문의 예입니다. 오류가 너무 많습니다 ... 코드를 수정하기 전에 the documentation을 읽는 것이 좋습니다.