我被要求在现有系统中添加一些搜索功能,以便我们收集PDF。我知道搜索PDF并用搜索参数打开它们,在我写的测试应用程序中,它就像一个梦想。当试图将其转换为我们现有的应用程序时,PDF会打开,但没有搜索条件或Acrobat Reader的高级查找弹出。任何帮助将不胜感激!
以下是cs代码的片段:
case "PDF":
string searchTerms = SearchWordsTB.Text;
searchTerms = searchTerms.Replace(',', ' ');
launchStr = "OpenPDF('" + e.Row.Cells[9].Text.Replace("\\", "/") + "','" + HttpUtility.UrlEncode(e.Row.Cells[2].Text) + "','" + e.Row.Cells[0].Text + "','" + searchTerms + "')";
break;
我们正在动态创建文档列表,PDF是其中一个选项。假设我正确理解了这一点,就会创建一个DataGrid,其中包含所有这些可单击的行,这些行将在单击时执行Javascript函数。 Javascript函数OpenPDF如下所示:
function OpenPDF(url, filename, ID, searchTerms) {
if (searchTerms.length > 0) {
window.open('FileViewer.aspx?name=' + filename + '&ID=' + ID + '&url=' + url + '#search="' + searchTerms + '"', 'mywindow' + windowCnt, 'width=800,height=600,location=no,resizable=yes');
}
else {
window.open('FileViewer.aspx?name=' + filename + '&ID=' + ID + '&url=' + url, 'mywindow' + windowCnt, 'width=800,height=600,location=no,resizable=yes');
}
windowCnt++;
}
从CS代码中的调试开始,我知道我在搜索术语中正确地删除了逗号,所以不应该成为问题。目前发生的是PDF文件将打开正常,但搜索条件没有被使用。我试过通过Javascript跟踪调试器(这对我来说一直是最常见的),但是断点永远不会被击中。还应该注意的是,Javascript函数保存在单独的Javascript文件中,并且不在aspx页面中内联。是的,我们正确引用了Javascript文件。我将非常乐意使用所请求的任何额外信息更新此帖子。在此先感谢您的帮助!
答案 0 :(得分:0)
我可以通过在启动字符串上使用http编码来实现所需的结果,如下所示。
launchStr = "OpenFile('" + HttpUtility.UrlEncode(e.Row.Cells[9].Text.Replace("\\", "/") + "#search=\"" + searchTerms + "\"") + "','" + HttpUtility.UrlEncode(e.Row.Cells[2].Text) + "','" + e.Row.Cells[0].Text + "','" + e.Row.Cells[1].Text + "')";
然后我使用该函数打开窗口,其中包含PDF。我遇到的问题是没有HTTP编码,URL只是切断了搜索参数。我认为这是因为#search =“blah”通常不会被识别为URL的一部分,因此被截断。如果有人有更好的理由,我很乐意听到。