PDFCreator имеет COM-компонент, вызываемый от.NET или VBScript (образцы, включенные в загрузку).
, Но, мне кажется, что принтер, в чем Вы нуждаетесь - просто смешивают это с автоматизация Word , и необходимо быть хороши пойти.
Я думаю, что ваш подход довольно хорош, но он изменил бы его на загрузку только заголовков, добавив w.Method = WebRequestMethods.Http.Head;
перед вызовом GetResponse
.
Это может сделать:
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.example.com");
request.Method = WebRequestMethods.Http.Head;
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
bool pageExists = response.StatusCode == HttpStatusCode.OK;
Возможно, вы захотите проверить и другие коды состояния.
Очевидное ускорение - параллельное выполнение нескольких запросов - большая часть времени будет потрачена на ввод-вывод, поэтому создание 10 потоков для каждой проверки страницы завершит всю итерацию примерно в 10 раз быстрее.
static bool GetCheck(string address)
{
try
{
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
request.Method = "GET";
request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
var response = request.GetResponse();
return (response.Headers.Count > 0);
}
catch
{
return false;
}
}
static bool HeadCheck(string address)
{
try
{
HttpWebRequest request = WebRequest.Create(address) as HttpWebRequest;
request.Method = "HEAD";
request.CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore);
var response = request.GetResponse();
return (response.Headers.Count > 0);
}
catch
{
return false;
}
}
Остерегайтесь, некоторые страницы (например, файлы WCF .svc) могут не возвращать ничего из запроса заголовка. Я знаю, потому что сейчас работаю над этим.
РЕДАКТИРОВАТЬ - Я знаю, что есть более эффективные способы проверить возвращаемые данные, чем подсчет заголовков, но это копирование / вставка из материалов, где это важно для нас.
.Proxy
: w.Proxy = null;
Без этого хотя бы 1-й запрос будет намного медленнее, по крайней мере, на моей машине.
3. Вы не можете загружать всю страницу, а загружать только заголовок, установив .Method на "HEAD".