Можно ли открыть файл PDF внутри приложения c # с помощью Acrobat.dll? - PullRequest
2 голосов
/ 09 января 2009

Я знаю, что могу отобразить файл PDF в моем исполняемом файле c # (не в веб-приложении) с помощью:

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

Но это обычный просмотрщик PDF, как в браузере. Я не хочу этого Мне нужна полная функциональность Adobe Standard или Professional в моем приложении C # с использованием элементов управления Adobe. Например, если я использую приведенный выше код, он загружается в приложение 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 #. Мне нужно, чтобы он открывался в моем приложении на c #, как это делает библиотека activex. Можно ли это сделать с этими библиотеками?

Если я не могу открыть его в своем приложении c #, я хотел бы иметь возможность "держать" мое приложение c # привязанным к нему, чтобы приложение c # знало, когда я закрываю приложение Adobe. По крайней мере, так у меня будет некоторая мера контроля. Это означает, что я открою, приложение Adobe откроется. Я закрываю приложение Adobe, мое приложение C # знает об этом и загружает недавно измененный документ с библиотекой ActiveX (потому что мне больше не нужна возможность изменения, просто отображается).

На моем компьютере установлены полные версии Adobe Acrobat. Это не читатель.

Спасибо за любую помощь.

редактирование: Есть пример в VB в Adobe Acrobat SDK. Я считаю, что это называется activeview.

Ответы [ 4 ]

2 голосов
/ 12 января 2009

Вы можете проверить ABCpdf . Я не знаю, есть ли у него такая возможность, но мы использовали ее для нескольких наших приложений

1 голос
/ 11 января 2009

Использование элемента управления веб-обозревателя может использоваться для отображения содержимого.

0 голосов
/ 11 февраля 2009

Лучший вариант - написать прослушиватель, который сообщит ваш код вызова, когда 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);
}
0 голосов
/ 09 января 2009

IText # может вам помочь.

Вы можете создавать PDF-файлы, и я считаю, что вы можете использовать их для чтения и изменения.

Что касается отображения в приложении ..... Я не уверен, как отобразить их с помощью iText или, если это возможно (еще не пробовал), извините. iText позволяет вам конвертировать в RTF, что может быть одним из подходов.

...