#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