2013-05-24 3 views
0

와 메시지 상자가 나는 PDF 문서의 아주 작은 공간에 아주 긴 문자열을 추가 할 수있는 방법을 찾아야합니다.유니 코드와 PDF 툴팁/iTextSharp

나는 iTextSharp을 사용하고 있습니다. 나는 이미 PdfAnnotation.CreateText()과 함께 주석 주석 (풍선)을 추가하려고 시도했고 나는 그들이 보거나 일하는 방식이 맘에 들지 않았습니다. 그것은 페이지를 너무 무겁게 만들었고 (페이지 당 많은 코멘트가있었습니다) 그들의 행동은 여러면에서 이상했습니다 (Adobe에게 감사드립니다).

이제는 페이지의 '덩어리'나 자바 스크립트가있는 팝업 메시지 상자 (예 : http://www.codehacker.com/ITEXTSHARP/chap15.aspx#)에 간단한 툴팁을 추가하려고합니다. 그러나 실망스럽게도 Acrobat (?)은 이러한 상황에서 유니 코드 문자를 지원하지 않습니다. 예 : 나는이 작업을 수행 :

var javascript = new PdfAnnotation(
    w, 200f, 550f, 300f, 650f, 
    PdfAction.JavaScript("app.alert('" + "Αρνάκι άσπρο και παχύ!" + "');\r", w)); 
chunk.SetAnnotation(javascript); 

... 사용자가 청크를 클릭 할 때, 가장 좋은 경우에, 횡설수설와 메시지 박스가 팝업됩니다.

위의 코드 또는 내가 원하는 일을 할 수있는 또 다른 방법에 대한 유니 코드를 허용 만들기위한 모든 설정이 있습니까? 편집


: 지금 본

이 : https://stackoverflow.com/a/163065/964053 와 내가 같은 코드 수정 시도했다 :

var javascript = new PdfAnnotation(
    w, 200f, 550f, 300f, 650f, 
    PdfAction.JavaScript((char)0xFEFF + "app.alert('" + "Αρνάκι άσπρο και παχύ!" + "');\r", w)); 
chunk.SetAnnotation(javascript); 

그러나 아무것도 변경할 것 같다 ...


EDIT2 : 예 : 8 진수 표현 사용. 이 그것에 당신까지 더블 땡그랑 소리를 좋은 작동하는 것 같다,하지만 난 내용의 크기에 따라 툴팁 크기 자체를 할 필요가 : (\141)


EDIT3은 ... 하나 도움이하지 않는 것 같습니다 :

var lToolTip = PdfFormField.CreatePopup(
    w, new Rectangle(tc.Left, tc.Bottom, tc.Right, tc.Top), val, true); 
chunk.SetAnnotation(lToolTip); 

제공하는 사각형을 ... 어떤 아이디어가 어떤 방식으로 사용하지 않는 것? PdfFormField.CreatePopup()이 무엇을 생성해야하는지 모르지만, 마우스를 가리키면 팝업을 표시하는 작은 페이지가 나타납니다.

답변

1

당신이 편집 할 때 잃어 버렸던 점은 무엇이 효과가 있고 무엇이 효과가없는가에 대한 것이 아니라 JavaScript의 유니 코드 문제에 관한 것입니다. 두 가지 버전의 javaScript() 메소드가 있다는 것을 알고 있습니까? 당신이 booleantrue은, 자바 스크립트 문자열이 유니 코드로 해석되어야 추가하는 경우

javaScript(java.lang.String, com.itextpdf.text.pdf.PdfWriter, boolean)를 참조하십시오. 이 방법으로 문제가 해결되지 않으면이 대답을 삭제하고 질문을 명확히하면 (관련없는 부분은 자르지) 다른 시도를 할 것입니다.

+0

나는 다른 과부하도 보지 못했습니다! 감사! 이제 또 다른 작은 문제가 있습니다. 경고 기능의 텍스트에 "\ r \ n"이 포함되어 있으면 메시지 상자가 전혀 나타나지 않습니다."\ n"또는 "\ r"만 제거하려고했지만 작동하지 않습니다. 전체 "\ r \ n"을 제거 할 때만 작동합니다. : – NoOne

+0

Ahh! val = val.Replace ("\ r \ n", "\\ r \ n n")를 사용하여 모든 것을 고쳐줍니다! 지금 감사합니다. Bruno. :) – NoOne

+0

By 그런데 툴킷 (예 : Acrobat의 주석이 아닌 모든 Windows 응용 프로그램에 사용되는 툴팁)을 청크에 넣을 수있는 방법은 알고 있습니까? 내가 주석이나 링크 위에 마우스를 가져 가면 acrobat 표시 툴팁을 보았습니다. 그러나 첫 번째는 사용하고 싶지 않고 두 번째는 툴팁에 URL 만 표시 할 수 있습니다. – NoOne

관련 문제