2013-04-16 2 views
1

У меня есть отчет, содержащий сотни страниц. Мне нужно создать каждую отдельную страницу из этого документа в новый документ. Я обнаружил, что это возможно с помощью INTEROP, однако я стараюсь не устанавливать MS Office на сервер. Я использую ASPOSE для большинства операций, но эта функциональность не поддерживается.копировать отдельные страницы из документа Word в новый документ C#

Есть ли способ разделить страницы документа на отдельные файлы без установки MS Office?

+0

Да, возможно. Что вы пробовали? – tnw

+0

До сих пор я только пытался использовать Aspose и не повезло. Я смог успешно извлечь каждую страницу, используя interop, но это не вариант. –

ответ

2

Aspose.Words не содержит информацию о макете, например, страницы или номера строк. Он поддерживает DOM. Но мы создали несколько полезных классов для достижения такого поведения. Они разбивают документ слова на несколько разделов, так что каждая страница становится отдельной секцией. После этого легко копировать отдельные страницы.

String sourceDoc = dataDir + "source.docx"; 
String destinationtDoc = dataDir + "destination.docx"; 

// Initialize the Document instance with source and destination documents 
Document doc = new Document(sourceDoc); 
Document dstDoc = new Document(); 

// Remove the blank default page from new document 
dstDoc.RemoveAllChildren(); 
PageNumberFinder finder = new PageNumberFinder(doc); 
// Split nodes across pages 
finder.SplitNodesAcrossPages(true); 
// Get separate page sections 
ArrayList pageSections = finder.RetrieveAllNodesOnPages(1, 5, NodeType.Section); 
foreach (Section section in pageSections) 
    dstDoc.AppendChild(dstDoc.ImportNode(section, true)); 
dstDoc.LastSection.Body.LastParagraph.Remove(); 
dstDoc.Save(destinationtDoc); 

Класс PageNumberFinder можно загрузить с here.

PS. Я - евангелист-разработчик в Aspose.

+0

PageSplitter: https://github.com/asposewords/Aspose_Words_NET/blob/master/Examples/CSharp/Loading-and-Saving/PageSplitter.cs –

Смежные вопросы