【发布时间】:2015-06-23 10:39:46
【问题描述】:
我正在将签名图像放到 PDF 的确切位置。在 PDF 中,我添加了报告工具书签,这样我就可以知道在哪里放置签名图像。问题是我不知道如何获取书签坐标。用ITextsharp可以吗?
----->编辑 书签图片
----->编辑
解决办法是:
PdfReader pdfReader = new PdfReader(GlobalVars.PdfFile);
IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(pdfReader);
string BookmarkID = "";
for (int j = 0; j < bookmarks.Count; j++)
{
//MessageBox.Show(bookmarks[i].Values.ToArray().GetValue(0).ToString());
string s = bookmarks[j].Values.ToArray().GetValue(0).ToString();
if (bookmarks[j].Values.ToArray().GetValue(0).ToString() == "##PODPIS##")
{
BookmarkID = bookmarks[j].Values.ToArray().GetValue(1).ToString();
}
}
var map = SimpleNamedDestination.GetNamedDestination(pdfReader, true);
foreach (KeyValuePair<string, string> entry in map)
{
if (entry.Key.ToString() == BookmarkID)
{
string[] LocationArray = entry.Value.Split(null);
GlobalVars.SignatuePageNumber = Convert.ToInt32(LocationArray[0]);
GlobalVars.SignatureX = float.Parse(LocationArray[2], CultureInfo.InvariantCulture.NumberFormat);
GlobalVars.SignatureY = float.Parse(LocationArray[3], CultureInfo.InvariantCulture.NumberFormat);
}
}
【问题讨论】:
-
定义“书签”。您是在谈论正式命名的“大纲”还是在谈论“命名目的地”?如果您在谈论“大纲”,那么您所谓的“书签”可以实现为明确的目的地(这将解决您的问题),作为命名的目的地,但也可以作为另一个动作,例如JavaScript(这会使您的问题难以回答)。简而言之:您的问题不完整。如果您不与我们共享 PDF,我们将无法帮助您,因为“书签”在 PDF 的上下文中可能意味着不同的东西。请更准确。
-
不知道是大纲还是命名为destination。我在帖子中添加了图片,也许您可以弄清楚。
-
根据图片,我们现在知道是轮廓了,但是还不知道是哪一种轮廓。请分享 PDF,以便我们进行调查。或者打开iText RUPS 中的PDF,向我们展示大纲是如何组成的。或者你为什么不阅读documentation,在那里你会找到诸如stackoverflow.com/questions/27739820/…之类的答案
-
我找到了坐标。还是谢谢你。
-
阅读书签,当你点击一个书签时发生的动作并不总是一个简单的目标。当您创建书签以供以后使用时,您没问题,但是对于一般情况没有足够的保护,您正在创建未来的问题。一个书签可以有一个完整的动作树,当它被点击时会连续发生。
标签: c# itextsharp