1

ご挨拶、

できる限りコードを縮小しようとしました。基本的に、印刷には Adob​​e Acrobat 標準の 6 Com ライブラリを使用します。これは、私が見たバッチ PDF 印刷ソリューションと同様に機能しますが、Citrix では機能しないようです。Citrix はネットワークの印刷場所を再マップしているように見えますが、既存のソリューションがないと機能しないようです。すべてのコードは Citrix 上で実行され、何も出力されません。ローカルで実行すると、問題なく実行および印刷されます。

どんな助けでも大歓迎です、

ありがとう、ブライアン

private void btnTest_Click(object sender, EventArgs e)
{
    try
    {
        Cursor.Current = Cursors.WaitCursor;

        PrintDialog PrintDialog1 = new PrintDialog();
        PrintDialog1.ShowDialog();

        CAcroAVDoc acroDoc = null;

        const string fileName = @"SomeFile.pdf";

        var acroApp = instantiateAcrobat();
        acroDoc = GetAcrobatAVDoc();

        acroDoc.Open(fileName, "");

        CAcroPDDoc pdDoc = (CAcroPDDoc)acroDoc.GetPDDoc();
        int numPages = pdDoc.GetNumPages();

        UnManagedMethods.SetDefaultPrinter(PrintDialog1.PrinterSettings.PrinterName);

        acroDoc.PrintPagesSilent(0, numPages - 1, 2, 1, 0);

        MessageBox.Show("Printed!!");
    }
    catch (Exception ex) 
    {
        MessageBox.Show(ex.Message);
    }
}

private static CAcroAVDoc GetAcrobatAVDoc()
{
    Type acroApp = Type.GetTypeFromProgID("AcroExch.AVDoc", true);
    return (CAcroAVDoc)Activator.CreateInstance(acroApp);
}

private static CAcroApp instantiateAcrobat()
{
    killAllAcrobatProcesses();
    Type acroApp = Type.GetTypeFromProgID("AcroExch.App", true);
    return (CAcroApp)Activator.CreateInstance(acroApp);
}

private static void killAllAcrobatProcesses()
{
    Process[] acrobatProcesses = Process.GetProcessesByName("Acrobat");
    if (acrobatProcesses.Length > 0)
    {
        foreach (Process process in acrobatProcesses)
        {
            process.Kill();
        }
    }
    Process[] acroRd32Processes = Process.GetProcessesByName("AcroRd32");
    if (acroRd32Processes.Length > 0)
    {
        foreach (Process process in acroRd32Processes)
        {
            process.Kill();
        }
    }
}
4

1 に答える 1

0

誰かが興味を持っているなら、これはCitrixの外のcitrixボックスにプリンターをインストールすることによって修正されました。秘訣は、リモートデスクトップをcitrixボックスにインストールし、プリンターをインストールしてアプリケーションを動作させ、印刷できるようにすることでした。次に、citrixを介してログオンすると、印刷は問題なく機能しました。振り返ってみると、それは非常に明白なようです。

于 2010-09-30T14:54:42.540 に答える