Как Вы управляете выбором лотка принтера для принтера в Windows

Мой вопрос: возможно ли что-то подобное?

blockquote>

Да.

Если да, то как?

blockquote>

В приведенном ниже коде многое происходит. Но главное - выяснить, какие запросы отправляются браузером, а затем эмулировать их с помощью запросов. Мы можем узнать запрос, сделанный через вкладку «сеть» в инструменте проверки.

Сначала мы создаем запрос поиска. Это дает левую и правую таблицу. Щелчок по левому столу дает нам школы в этом районе. Но если мы внимательно наблюдаем, щелчок по ссылке на область также является почтовым запросом (который мы должны сделать, используя запросы)

Например. Нажав на «ВВС - Восточная болезнь». дает нам таблицу, содержащую ссылки школ в этой области. Затем мы должны перейти к этой школьной ссылке и выяснить потенциал.

Так как нажатие на каждую ссылку школы также является запросом поста, мы должны подражать, и это возвращает страницу школы. Отсюда мы отбрасываем название школы и вместимость.

Вы можете прочитать Расширенное использование запросов , чтобы узнать об объектах Session, Выполнить запрос , чтобы прочитать о создании запроса с помощью запросов.

import requests
from bs4 import BeautifulSoup
import pandas as pd
end_list=[]
s = requests.Session()
URL = "http://web1.ncaa.org/stats/StatsSrv/careersearch"
data={'doWhat': 'teamSearch','searchOrg': 'X', 'academicYear': 2006, 'searchSport':'MFB','searchDiv': 1}
r = s.post(URL,data=data)
soup=BeautifulSoup(r.text,'html.parser')
area_list=soup.find_all('table')[8].find_all('tr')
area_count=len(area_list)#has no of areas + 1  tr 'Total Results of Search:  239'
for idx in range(0,area_count):
    data={
    'sortOn': 0,
    'doWhat': 'showIdx',
    'playerId':'' ,'coachId': '',
    'orgId':'' ,
    'academicYear':'' ,
    'division':'' ,
    'sportCode':'' ,
    'idx': idx
    }
    r = s.post(URL,data=data)
    soup=BeautifulSoup(r.text,'html.parser')
    last_table=soup.find_all('table')[-1]#last table
    for tr in last_table.find_all('tr'):
        link_td=tr.find('td',class_="text")
        try:
            link_a=link_td.find('a')['href']
            data_params=link_a.split('(')[1][:-2].split(',')
            try:
                #print(data_params)
                sports_code=data_params[2].replace("'","").strip()
                division=int(data_params[3])
                player_coach_id=int(data_params[0])
                academic_year=int(data_params[1])
                org_id=int(data_params[4])
                #print(sports_code,division,player_coach_id,academic_year,org_id)
                data={
                'sortOn': 0,
                'doWhat': 'display',
                'playerId': player_coach_id,
                'coachId': player_coach_id,
                'orgId': org_id,
                'academicYear': academic_year,
                'division':division,
                'sportCode':sports_code,
                'idx':''
                }
                url='http://web1.ncaa.org/stats/StatsSrv/careerteam'
                r = s.post(url,data=data)
                soup2=BeautifulSoup(r.text,'html.parser')
                institution_name=soup2.find_all('table')[1].find_all('tr')[2].find_all('td')[1].text.strip()
                capacity=soup2.find_all('table')[4].find_all('tr')[2].find_all('td')[1].text.strip()
                #print([institution_name, capacity])
                end_list.append([institution_name, capacity])

            except IndexError:
                pass

        except AttributeError:
            pass
#print(end_list)
headers=['School','Capacity']
df=pd.DataFrame(end_list, columns=headers)
print(df)

Выход

                School Capacity
0            Air Force   46,692
1                Akron   30,000
2              Alabama  101,821
3         Alabama A&M;   21,000
4          Alabama St.   26,500
5          Albany (NY)    8,500
6               Alcorn   22,500
7      Appalachian St.   30,000
8              Arizona   55,675
9          Arizona St.   64,248
10     Ark.-Pine Bluff   14,500
11            Arkansas   72,000
12        Arkansas St.   30,708
13     Army West Point   38,000
14              Auburn   87,451
15         Austin Peay   10,000
16                 BYU   63,470
17            Ball St.   22,500
18              Baylor   45,140
19     Bethune-Cookman    9,601
20           Boise St.   36,387
21      Boston College   44,500
22       Bowling Green   24,000
23               Brown   20,000
24            Bucknell   13,100
25             Buffalo   29,013
26              Butler    5,647
27            Cal Poly   11,075
28          California   62,467
29   Central Conn. St.    5,500
..                 ...      ...
209               UCLA   91,136
210              UConn   40,000
211                UNI   16,324
212               UNLV   36,800
213          UT Martin    7,500
214               UTEP   52,000
215               Utah   45,807
216           Utah St.   25,100
217                VMI   10,000
218         Valparaiso    5,000
219         Vanderbilt   40,350
220          Villanova   12,000
221           Virginia   61,500
222      Virginia Tech   65,632
223             Wagner    3,300
224        Wake Forest   31,500
225         Washington   70,138
226     Washington St.   32,740
227          Weber St.   17,500
228      West Virginia   60,000
229      Western Caro.   13,742
230       Western Ill.   16,368
231        Western Ky.   22,113
232      Western Mich.   30,200
233     William & Mary   12,400
234          Wisconsin   80,321
235            Wofford   13,000
236            Wyoming   29,181
237               Yale   64,269
238     Youngstown St.   20,630

[239 rows x 2 columns]

Примечание. Это займет много времени. Утилизируем> 239 страниц. Так что наберитесь терпения. Может занять 15 минут или дольше.

5
задан Aardvark 24 October 2008 в 16:10
поделиться

4 ответа

Установка функций как это может быть хитрой, особенно если драйвер не следует инструкциям по печати Microsoft. Однако мы имели некоторый успех с Системой. Рисование. Печать. PrinterSettings. Можно установить PaperSource, но я не уверен, что можно установить значения по умолчанию.

Если Вы не видели этот пример, можно хотеть далее посмотреть на него. Это описывает метод, чтобы сохранить и перезагрузить параметры принтера. Один из моих парней указал на него на меня: PrinterSettings - Изменение, Хранение и Загрузка Параметров принтера

Другой метод, который мог работать, но не мог бы работать на Вас, должен определить Ваш небольшое количество установок, в которых Вы нуждаетесь. Установите принтер с каждым из них (т.е.: Лоток 1, Лоток 2) установки. Затем просто переключите принтер по умолчанию на печати. Не, что Вы ищете, но это может помочь.

То, что мы обычно делаем в этих ситуациях, имеют приложение сторонних производителей, пишут данные в папку, которую мы контролируем, мы затем берем файл и анализируем Постскриптум или PCL сами и изменяем лоток для бумаги и затем отправляем на устройство назначения. Намного более простой затем это может звучать.

1
ответ дан 15 December 2019 в 01:15
поделиться

dmDefaultSource управляет лотком. К сожалению, значения, к которым Вы захотите установить это, отличаются в зависимости от Вашего драйвера, поскольку это - число мусорного ведра и не обязательно то же число как tray#, распечатанный на Вашем принтере.

Следующая ссылка предоставляет некоторый код VB6 для сбора информации о Ваших присвоениях лотка/мусорного ведра принтеров. Можно использовать ту информацию, чтобы программно присвоить dmDefaultSource соответствующему мусорному ведру # для лотка. В основном необходимо использовать DeviceCapabilities, чтобы возвратить информацию о принтерах и затем искать строку (как "Лоток 1") для получения связанного числа мусорного ведра.

http://support.microsoft.com/kb/194789

1
ответ дан 15 December 2019 в 01:15
поделиться

Я должен был недавно сделать что-то очень похожее на определенном драйвере принтера, и оно потребовало поставщику определенного SDK. Лоток, кажется, не появляется в DEVMODE или любой из других структур PRINTINFO_*, таким образом, я предполагаю, что отбросил бы электронное письмо поставщику принтера.

Как последнее прибежище я могу думать о двух возможных взломах. Нужно автоматизировать драйвер на уровне GUI с помощью инструмента в виде сценария, такого как AutoIT. Второй должен вывести реестр в файл, изменить настройки драйвера, вывести реестр снова и выдержать сравнение, различия (можете, или может не работать).

0
ответ дан 15 December 2019 в 01:15
поделиться

Насколько я знаю, принтерами управляет драйвер принтера путем отправки им команд PJL или SNMP. Но не все принтеры реализуют полностью эти наборы команд.

Для принтеров HP я нашел в: http://h20000.www2.hp.com/bizsupport/TechSupport/Document.jsp?lang=en&cc=us&objectID=bpl07282&jumpid=reg_R1002_USEN некоторые команды PJL (существуют некоторые связанные с лотком также).

Я не уверен эта справка, но беру ее в качестве подсказки для будущих поисков...

0
ответ дан 15 December 2019 в 01:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: