SORU
1 AĞUSTOS 2008, Cuma


Nasıl bir web hizmetinden bir HTML belgesi yazdırabilirim?

# C bir web servisinden HTML yazdırmak istiyorum. Web Tarayıcı denetimi overkill olduğunu ve iyi hizmet bir ortamda çalışmaz, ne de çok sıkı güvenlik kısıtlamaları ile bir sistem üzerinde işliyor. Ücretsiz herhangi bir tür var .Basit bir HTML sayfasının baskı destekleyecek NET kütüphane? Burada düzgün çalışmaz ki ben, şimdiye kadar kodu.

public void PrintThing(string document)
{
    if (Thread.CurrentThread.GetApartmentState() != ApartmentState.STA)
    {
        Thread thread =
            new Thread((ThreadStart) delegate { PrintDocument(document); });
        thread.SetApartmentState(ApartmentState.STA);
        thread.Start();
    }
    else
    {
        PrintDocument(document);
    }
}

protected void PrintDocument(string document)
{
    WebBrowser browser = new WebBrowser();
    browser.DocumentText = document;
    while (browser.ReadyState != WebBrowserReadyState.Complete)
    {
        Application.DoEvents();
    }
    browser.Print();
}

Bu UI-tip konuları çağrıldığında gayet iyi çalışıyor, ama hiçbir şey Hizmet Türü iş parçacığı çağrıldığında olur. ShowPrintPreviewDialog() Print() değişen aşağıdaki IE script hata veriyor

Hata: 'dialogArguments__._YANİ_' null veya bir nesne değil . PrintType ^ / ^ br . URL: res://ieframe./önizleme dll.çalışmaktadır

Küçük ve boş bir baskı önizleme iletişim kutusu görünür.

CEVAP
3 AĞUSTOS 2008, Pazar


Komut satırında aşağıdakileri kullanarak yazdırabilirsiniz:

rundll32.exe %WINDIR%\System32\mshtml.dll,PrintHTML "%1"

%1 html dosyası yolu olduğu yazdırılacak dosya.

Eğer bellek (ya da geçici bir dosya olarak diske yazmak için gelemez) yazdırmak için bile kullanabilirsiniz:

using (Process printProcess = new Process())
{
string systemPath = Environment.GetFolderPath(Environment.SpecialFolder.System);
printProcess.StartInfo.FileName = systemPath @"\rundll32.exe";
printProcess.StartInfo.Arguments = systemPath @"\mshtml.dll,PrintHTML """ fileToPrint @"""";
printProcess.Start();
}

N. B. Bu sadece Windows sanırım yukarıda 2000 ve üzerinde çalışır.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • The Pet Collective

    The Pet Coll

    5 Ocak 2012
  • thenewboston

    thenewboston

    4 ŞUBAT 2008