2

次のコマンドを使用して、c#実行可能ファイル(Webアプリではない)にPDFファイルを表示できることを知っています。

private AxAcroPDFLib.AxAcroPDF axAcroPDF1;
axAcroPDF1.LoadFile(@"somefile.pdf");
axAcroPDF1.Show();

しかし、それはブラウザのような通常のpdfビューアです。私はそれを望んでいません。Adobeコントロールを使用して、C#アプリケーションにAdobeStandardまたはProfessionalの完全な機能が必要です。たとえば、上記のコードを使用すると、C#アプリに読み込まれ、Adobeツールバー(印刷、保存など)が表示されますが、ActiveXでは実行できない保存などが必要なため、役に立ちません。上記のビューア。具体的には、ブラウザ内でできないのと同じように、保存することはできません。

だから、私はacrobat.dllを参照し、使用しようとしています:

Acrobat.AcroAVDocClass _acroDoc = new Acrobat.AcroAVDocClass();
Acrobat.AcroApp _myAdobe = new Acrobat.AcroApp();
Acrobat.AcroPDDoc _pdDoc = null;
_acroDoc.Open(myPath, "test");
pdDoc = (Acrobat.AcroPDDoc)(_acroDoc.GetPDDoc());
_acroDoc.SetViewMode(2);
_myAdobe.Show();

adobe acrobatを開きますが、c#アプリケーションの外部で開きます。ActiveXライブラリのようにc#アプリケーションで開く必要があります。これらのライブラリで実行できますか?

c#アプリケーションで開くことができない場合は、それに関連付けられているc#アプリを「保持」して、adobeアプリを閉じたときにc#アプリが認識できるようにします。少なくともそうすれば、ある程度のコントロールができます。これは、開くと、adobeアプリが開くことを意味します。Adobeアプリを閉じます。C#アプリはこれを認識し、新しく変更されたドキュメントをActiveXライブラリにロードします(変更機能はもう必要ないため、表示するだけです)。

コンピューターにAdobeAcrobatのフルバージョンをインストールしています。読者ではありません。

助けてくれてありがとう。

編集:adobeacrobatsdkのvbに例があります。それはアクティブビューと呼ばれていると思います。

4

4 に答える 4

2

ABCpdfをチェックアウトできます。この機能があるかどうかはわかりませんが、いくつかのアプリで使用しています

于 2009-01-12T14:03:34.407 に答える
1

Web ブラウザ コントロールを使用すると、コンテンツを表示できます。

于 2009-01-11T11:04:17.203 に答える
0

最適なオプションは、Adobe.exe が実行されなくなったときに呼び出し元のコードに通知するリスナーを作成することです。次のようなもの (用途に合わせて微調整) が機能するはずです。

public void Open(string myPath)
{
    Acrobat.AcroAVDocClass _acroDoc = new Acrobat.AcroAVDocClass();
    Acrobat.AcroApp _myAdobe = new Acrobat.AcroApp();
    Acrobat.AcroPDDoc _pdDoc = null;
    _acroDoc.Open(myPath, "test");
    _pdDoc = (Acrobat.AcroPDDoc) (_acroDoc.GetPDDoc());
    _acroDoc.SetViewMode(2);
    _myAdobe.Show();
    NotifyAdobeClosed += new EventHandler(Monitor_NotifyAdobeClosed);
    MonitorAdobe();
}
private void Monitor_NotifyAdobeClosed(object sender, EventArgs e)
{
    NotifyAdobeClosed -= Monitor_NotifyAdobeClosed;
    //Do whatever it is you want to do when adobe is closed.
}

private void MonitorAdobe()
{
    while(true)
    {
        var adcount = (from p in Process.GetProcesses()
                       where p.ProcessName.ToLower() == "acrobat"
                       select p).Count();
        if (adcount == 0)
        {
            OnNotifyAdobeClosed();
            break;
        }
    }
}

public event EventHandler NotifyAdobeClosed;
public void OnNotifyAdobeClosed()
{
    if (NotifyAdobeClosed != null)
        NotifyAdobeClosed(this, null);
}
于 2009-02-11T19:25:56.783 に答える
0

IText#が役に立ちます。

PDF を作成することができ、それを使用してそれらを読んだり変更したりできると思います。

アプリでの表示について..... iTextで表示する方法がわかりませんか、可能かどうか(まだ試していません)、申し訳ありません。iText では、RTF に変換できますが、これは 1 つのアプローチである可能性があります。

于 2009-01-09T20:10:21.970 に答える