0

以下のコードは、バーコード(ゼブラバーコードプリンター)印刷用のWebアプリケーションで使用しています。アプリケーションサーバーで印刷を行うと、印刷できます。

[DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true,                                            ExactSpelling = true, CallingConvention = CallingConvention.StdCall)]          
public static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount,     out Int32 dwWritten);

public static bool SendBytesToPrinter(string szPrinterName, IntPtr pBytes, Int32 dwCount)
{
    Int32 dwError = 0, dwWritten = 0;
    IntPtr hPrinter = new IntPtr(0);
    DOCINFOA di = new DOCINFOA();
    bool bSuccess = false; // Assume failure unless you specifically succeed.

    //di.pDocName = "My C#.NET RAW Document";
    //di.pDataType = "RAW";

    // Open the printer.
    if (OpenPrinter(szPrinterName.Normalize(), out hPrinter, IntPtr.Zero))
    {
        // Start a document.
        if (StartDocPrinter(hPrinter, 1, di))
        {
            // Start a page.
            if (StartPagePrinter(hPrinter))

            {
                // Write your bytes.
                bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten);
                EndPagePrinter(hPrinter);
            }
            EndDocPrinter(hPrinter);

        }
        ClosePrinter(hPrinter);
    }
    // If you did not succeed, GetLastError may give more information
    // about why not.
    if (bSuccess == false)
    {
        dwError = Marshal.GetLastWin32Error();
    }
    return bSuccess;
}

これszPrinterNameは、アプリケーションのドロップダウン ボックスからのプリンター名です。ここで、アプリケーションサーバーにのみインストールされたプリンター名を取得でき、印刷はサーバーに送られます。

クライアントマシンのプリンタ名を取得し、クライアント マシンのプリンタで印刷するはどうすればよいですか?

4

1 に答える 1

1

簡単な答えは、@ PabloRomeoによる上記のコメントで指摘されているように、あなたが説明していることを簡単な方法で行うことはできないということです。Webブラウザである理由は、プリンタを含むローカルリソースへの直接アクセスを許可していません。これはセキュリティの目的で行われます。そうは言っても、サイトにアクセスするマシンが、作成する必要のあるヘルパーソフトウェアをインストールする場合に、必要なタイプのエクスペリエンスを取得する方法がいくつかあります。少し前に、同様のタイプの質問でこれに関する重要な詳細を提供しました。これは、以下のリンクで確認できます。

WebページからZebraプリンターにバーコードを印刷する

于 2012-09-06T15:17:40.573 に答える