텍스트 (또는 스티커 메모) 주석의 컨텍스트에서 "확인/선택 취소"라는 용어 때문에 질문이 다소 혼란 스럽습니다. 올바른 용어는 다음과 같습니다. 텍스트 주석을 표시/해제하는 방법은 무엇입니까?
은/우리가 확인란에 대해 생각하게 즉시 체크 해제하지만 다음 스크린 샷은 우리가 텍스트 주석 표시에 대해 이야기 할 때 무엇을 의미하는지 보여줍니다
검사 : 텍스트 주석을 표시
것은 아니다 확인란을 선택해야합니다. 텍스트 주석을 표시하는 것은 숨겨진 "In Reply To"(IRT) 주석을 추가하여 수행됩니다. "답장"주석에 대한 자세한 내용은 공식 사이트 How to add an "In Reply To" annotation?을 참조하십시오.
나는 결과로 AddMarked으로 AddInReplyTo 예를 적용했습니다
public void manipulatePdf(String src, String dest) throws IOException, DocumentException {
PdfReader reader = new PdfReader(src);
PdfDictionary page = reader.getPageN(1);
PdfArray annots = page.getAsArray(PdfName.ANNOTS);
PdfDictionary sticky = annots.getAsDict(0);
PdfArray stickyRect = sticky.getAsArray(PdfName.RECT);
PdfDictionary popup = annots.getAsDict(1);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
PdfWriter writer = stamper.getWriter();
Rectangle stickyRectangle = new Rectangle(
stickyRect.getAsNumber(0).floatValue(), stickyRect.getAsNumber(1).floatValue(),
stickyRect.getAsNumber(2).floatValue(), stickyRect.getAsNumber(3).floatValue()
);
PdfAnnotation replySticky = PdfAnnotation.createText(
writer, stickyRectangle, "Bruno", "Marked set by Bruno", false, "Comment");
replySticky.put(PdfName.IRT, annots.getAsIndirectObject(0));
replySticky.put(PdfName.STATE, new PdfString("Marked"));
PdfNumber n = sticky.getAsNumber(PdfName.F);
replySticky.put(PdfName.F, new PdfNumber(n.intValue() | PdfAnnotation.FLAGS_HIDDEN));
replySticky.put(new PdfName("StateModel"), new PdfString("Marked"));
stamper.addAnnotation(replySticky, 1);
stamper.close();
}
예는 자바이지만 C 번호에 적응하기 상당히 쉬워야한다. 원본 주석을 sticky
으로 표시하려면 추가 주석 replySticky
을 추가해야합니다. 일반적인 IRT 주석과의 차이점은 주석의 플래그에 FLAGS_HIDDEN
을 추가하여 주석을 숨길 것이라는 점입니다. /State
을 Marked
및 /StateModel
을 Marked
으로 설정합니다.
이 코드는 요청한대로 hello_sticky_note.pdf을 hello_marked.pdf으로 바꿉니다. 그러나 catch가 있습니다! 이 확인란은 사용자 "Bruno"로 로그인 한 경우에만 표시됩니다. 이 확인란은 개인적인 용도로만 사용됩니다.
다른 사용자가 리뷰 상태를 볼 수있게하려면 "표시된"기능을 사용하면 안됩니다. 대신 "검토"를 사용해야합니다. 이것은 ISO-32000에서 잘 설명되어 있지 않습니다.제목 "텍스트 주석에 고유 한 추가 항목"으로 표를 참조하십시오
을 표 제목 "주석 상태"로 테이블을 참조 :
우리가 사용했던 조합 StateModel = 표시; 상태 =으로 표시됩니다. 즉, 사용자가 주석을 표시했음을 의미합니다. 나는이 마크가 문서를 표시 한 사용자의 기계에서만 볼 수 있음을 사양에서 발견하지 못했습니다.
PdfAnnotation replySticky = PdfAnnotation.createText(
writer, stickyRectangle, "Bruno", "Accepted by Bruno", false, "Comment");
replySticky.put(PdfName.IRT, annots.getAsIndirectObject(0));
replySticky.put(PdfName.STATE, new PdfString("Accepted"));
PdfNumber n = sticky.getAsNumber(PdfName.F);
replySticky.put(PdfName.F, new PdfNumber(n.intValue() | PdfAnnotation.FLAGS_HIDDEN));
replySticky.put(new PdfName("StateModel"), new PdfString("Review"));
stamper.addAnnotation(replySticky, 1);
stamper.close();
이 예는 우리가 지금 조합을 사용하는 것을 제외하고 우리가 이전 한 것과 동일하다 :
이를 발견 한 후, 나는 AddAccepted 예를 만들었습니다 StateModel = 검토; 상태 = 수락. "주석 상태"표에서 알 수 있듯이 상태에 대한 다른 가능한 옵션은 "거부 됨", "취소됨", "완료 됨"및 "없음"(기본값)입니다.
결과는 다음과 같습니다 당신이 볼 수 있듯이
는 녹색 확인 표시가 코멘트 패널에 나타납니다. 그것은 브루노에 로그인 한 사용자가 아닌 컴퓨터에서 "브루노 수락"을 보여줍니다. 여기에서 직접 확인하실 수 있습니다 : hello_accepted.pdf
텍스트 주석을 작성 중입니다. 텍스트 주석을 선택하거나 선택 취소 할 수 없습니다. 확인란을 어떻게 만드는지 보여주세요. –
Adobe Acrobat Reader를 보면 주석을 추가 한 후 주석을 선택하거나 선택 취소 할 수 있음을 알 수 있습니다. 나는 사진을 추가 할 수 없다. 웹 사이트는 나를 허용하지 않는다. – Caryluna
질문이 정확하지 않습니다. 텍스트 주석 (일명 스티커 메모)을 만들고 있습니다. [here] (http://itextpdf.org/documents/stickynote.png)와 같이 표시를 체크 표시로 변경할 수 있지만 이는 사용자가 요구하는 것이 아닙니다. 확인란을 선택/선택 취소 할 것인지 묻는 중입니다. 체크 박스는 위젯 주석으로 표시되는 양식 필드이며, 텍스트 주석이 아닌 양식 주석입니다. 더 정확하게 말하십시오! –