0

我需要找到一种方法在 PDF 文档的一个很小的空间中添加一个很长的字符串。

我正在使用iTextSharp。我已经尝试过添加评论注释(气球),PdfAnnotation.CreateText()但我不喜欢它们的外观/工作方式。它使页面太重(我每页有很多评论)并且他们的行为在很多方面都很奇怪(感谢 Adob​​e)。

现在我正在考虑在页面中的“块”上添加一些简单的工具提示,或者使用 javascript 弹出消息框(如图所示:http: //www.codehacker.com/ITEXTSHARP/chap15.aspx#)。然而,令我非常失望的是,在这些情况下,Acrobat (?) 似乎不支持 Unicode 字符。例如我这样做:

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

...并且,在最好的情况下,当用户单击该块时,会弹出一个带有乱码的消息框。

是否有任何设置可以使上面的代码可以接受 Unicode 或其他方式来做我想做的事情?


编辑:

我现在已经看到了这个: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: 使用八进制表示,例如(\141)似乎也无济于事......


EDIT3: 这似乎工作得很好,直到你双击它,但我需要根据内容大小使工具提示大小本身:

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

提供的矩形似乎没有以任何方式使用......有什么想法吗?我不知道 PdfFormField.CreatePopup() 应该创建什么,但是我在页面上看到一个小标记,当您将鼠标悬停在它上面时会显示一个弹出窗口。

4

1 回答 1

1

我有点迷失在你的编辑中,不清楚什么适合你,什么不适合,但是关于 JavaScript 中的 unicode 问题:你知道有两个版本的 javaScript() 方法吗?

javaScript(java.lang.String, com.itextpdf.text.pdf.PdfWriter, boolean)

如果添加booleanvalue true,则 JavaScript 字符串应被解释为 Unicode。如果这不能解决你的问题,我会删除这个答案,如果你澄清你的问题(去掉不相关的部分),我会再试一次。

于 2013-05-25T08:19:41.073 回答