Как мне сохранить этот объект в файл? - PullRequest
1 голос
/ 21 февраля 2011

У меня есть несколько текстовых документов с объектами внутри. Я тестирую тот, который имеет 3 pdf-файла (слово wordApp.Selection.InlineShapes.Count соответствует этому), но в противном случае у меня возникают проблемы с получением какой-либо информации из объектов. Как мне сохранить его на диск? Любая помощь приветствуется, потому что inlineShape.OLEFormat.IconLabel является пустой строкой во всех 3 случаях.

        var wordApp = new Word.Application();
        object confirmConversions = false;
        object readOnly = true;

        object missing = Type.Missing;
        this.document = wordApp.Documents.Open(
            ref fn, ref confirmConversions, ref readOnly,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing, ref missing, ref missing,
            ref missing);

        string applicationName = null;

        foreach (Microsoft.Office.Interop.Word.InlineShape inlineShape in this.document.InlineShapes)
        {
            applicationName = inlineShape.OLEFormat.IconLabel;
        }

Ответы [ 2 ]

2 голосов
/ 21 февраля 2011

Если вы открыты для использования сторонних элементов управления, это можно легко сделать с помощью Aspose.Words:

         Aspose.Words.Document d = new Document(@"C:\users\john\desktop\embeddedPDF.docx");
        foreach (Aspose.Words.Drawing.Shape shp in d.GetChildNodes(NodeType.Shape, true))
        {
        shp.OleFormat.Save(@"C:\Temp\testoutput.pdf");
        }
2 голосов
/ 21 февраля 2011

Вот фрагмент из поста, который я нашел здесь , который объясняет подход, который вы должны использовать, чтобы сделать это:

Любой файл, который может быть встроен в документ как объект OLE может быть экстрагируют. Тем не менее, мы не можем быть в состоянии предоставить вам простой код пример, если технология не принадлежат нам (например, Adobe Acrobat файлы).

Что мы делаем с объектами Office активирует объект, а затем воспользоваться открытыми Интерфейс IDispatch, чтобы мы могли использовать COM-взаимодействие, чтобы общаться напрямую с моделью программирования объекта. Как это бывает, приложения Office обычно предоставляют методы SaveAs, которые мы можем позвонить, чтобы сохранить файлы в вопрос. Проходя через офис модель программирования таким образом является удобный ярлык, который позволяет сохранить вложенные объекты с очень небольшим код.

Я подозреваю, что Adobe Acrobat выставляет похожая модель программирования, потому что есть тип Adobe Acrobat Библиотека. Вам придется просматривать Введите библиотеку, чтобы увидеть, если она предоставляет некоторые Сортировка Сохранить или Сохранить как метод. Если оно Вы можете добавить его как ссылку на ваш проект (через COM-ссылки вкладка диалога Добавить ссылку в Visual Studio) и взять аналогичный подход, как предполагает Джи в своем посте выше. (продолжение ...)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...