Как открыть Pdf с помощью vbscript в Chrome и выполнить поиск по # в URL-адресе

#google-chrome #pdf #vbscript #acrobat

#google-chrome #PDF #vbscript #acrobat

Вопрос:

Добрый день,

Я пытаюсь открыть URL-адрес PDF с помощью vbscript. PDF-файл находится на локальном компьютере. Я использую vbscript для открытия URL-адреса и использую chrome. В моем URL-адресе я использую #Search=Register, это откроет PDF-файл и выполнит поиск по первому вхождению Register.

Моя проблема в том, что кажется, что мой URL-адрес кодируется%, даже если мой # кодируется в#, а затем предварительный просмотр chrome pdf не работает.

Мой код vbscript :

 Dim strChrome
Dim WShellChrome
Dim strUrl

Set WShellChrome = CreateObject("WScript.Shell")
strChrome = "C:Program Files (x86)GoogleChromeApplicationchrome.exe"
strUrl = "\myserver/HelpDocumentation/Configuration - Company Configuration.pdf#Search=Register"

WShellChrome.Run chr(34)   strChrome   chr(34) amp; " " amp; chr(34)   strUrl   chr(34), 1, false
  

Когда я запускаю этот код, он открывает Chrome со следующим URL:

 file://myserver/HelpDocumentation/Configuration%20-%20Company%20Configuration.pdf%23Search=Register
  

Обратите внимание на кодировку% url, которая произошла. — это пробел, а # — #

Затем браузер не может найти URL-адрес pdf, потому что # был закодирован в#. Если я изменю% 23 в URL-адресе браузера на #, это сработает, и отобразится pdf.

Похоже, что (пробел) в URL-адресе в порядке, но ему не нравится % 23 (#).

Мне нужен # в URL-адресе, чтобы открыть PDF-файл и выполнить поиск по определенной строке.

Также кажется, что это не vbscript, если я скопирую URL :

 \myserver/HelpDocumentation/Configuration - Company Configuration.pdf#Search=Register
  

И вставьте его в мой URL-адрес Chrome, он автоматически преобразует пробелы в , а # в #, но предварительный просмотр acrobat не работает из-за #, который, по его мнению, является частью имени файла.

Надеюсь, я понимаю, пожалуйста, спросите, если вы не понимаете.

Комментарии:

1. Используйте escape для кодирования strUrl: strUrl = escape(strUrl) и используйте это значение

2. Если вы определяете путь UNC, по крайней мере, используйте правильное обозначение — \ server share folder folder file.расширение, Chrome может позволить вам смешивать прямые и обратные косые черты, но пути UNC должны быть обратными косыми чертами .

3. Вы могли бы попробовать передать uri, правильно закодированный перед рукой, и оставить # как есть. Таким образом, это было бы что-то вроде (игнорируя первую часть uri) — Configuration - Company Configuration.pdf#Search=Register , таким образом, Chrome понимает, что он уже закодирован, и не пытается использовать вторую кодировку. Также нет необходимости во всей этой Chr(34) ерунде, просто используйте strChrome = """C:Program Files (x86)GoogleChromeApplicationchrome.exe""" , вы можете сделать то же самое с uri, просто добавив "" и начало и конец строки.

4. @Lankymart Спасибо за ваши предложения, я реализовал это и увидел, что мне нужно включить file: в начале моего URL-адреса, чтобы браузер не кодировал снова. Мне также пришлось добавить кодировку пробела. Я обновил свой пост своими результатами, пожалуйста, проверьте, согласны ли вы, а также создайте сообщение о решении. Спасибо за вашу помощь.

5. @Renier приятно слышать, однако вместо обновления вопроса не могли бы вы оставить решение в качестве ответа, чтобы вопрос был решен? Нет проблем с самостоятельным ответом на вопрос, и вы даже можете принять его самостоятельно через день или около того.

Ответ №1:

После ответов я попробовал следующее.

Пробовал использовать strUrl = escape(strUrl) , но это привело к тому, что strUrl был полностью закодирован даже через / и косые черты.

Затем я начал проверять разные URL-адреса, как предлагалось, изменяя мои / на косые черты, а также пробелы в кодировке. Это был мой результат.

Когда я использую URL-адрес с кодировкой пробелов, например

 "\myserverHelpDocumentationConfiguration - Company Configuration.pdf#Search=Register_"
  

в Chrome он вообще не кодируется, и при каждом пробеле в URL-адресе открывается новая вкладка. — Не работает.

Когда я использую

 "\myserverHelpDocumentationConfiguration - Company Configuration.pdf#Search=Register_"
  

в Chrome он меняется на : file://myserver/HelpDocumentation/Configuration%20-%20Company%20Configuration.pdf#Search=Register_
Затем не работает из-за двойного кодирования. Таким образом, он добавляет «file:», а также снова кодирует URL, пробелы и # кодируются.

Когда я использую

 file:\myserverHelpDocumentationConfiguration%20-%20Company%20Configuration.pdf#Search=Register_
  

в Chrome он остается неизменным, и в результате он работает. Таким образом, значение «file:», добавляемое в начале и кодирующее только пробелы в URL, имеет значение.

В итоге я получил следующий код. Обратите внимание, что strUrl — это входная переменная, которую я только что жестко запрограммировал, например. Теперь я также проверяю, является ли это pdf, затем добавляю «file:», поскольку URL-адрес может быть файлом или URL-адресом отчета. Этот код работает.

 Dim strChrome
Dim WShellChrome
Dim strUrl

Set WShellChrome = CreateObject("WScript.Shell")
strChrome = """C:Program Files (x86)GoogleChromeApplicationchrome.exe"""
strUrl = "\myserverHelpDocumentationConfiguration - Company Configuration.pdf#Search=Register_"

strUrl = Replace(strUrl, " ", "%20")

if(InStr(strUrl,".pdf")) Then
   strUrl = "file:"   strUrl
End If

WShellChrome.Run strChrome amp; " " amp; "" strUrl "" , 1, false