Podziel dokument

Splitting lub * podzielenie dokumentu * jest procesem podziału dużego dokumentu na większą liczbę mniejszych plików. Istnieją różne powody, aby podzielić plik. Na przykład, potrzebujesz tylko niektórych stron z konkretnego dokumentu, a nie całego. Albo z powodów prywatności, chcesz podzielić się tylko niektórymi częściami dokumentu z innymi. Z funkcją podziału, można uzyskać tylko wymagane części dokumentu i wykonać niezbędne działania z nimi, na przykład, aby oznaczyć, zapisać lub wysłać.

Aspose.Words zapewnia skuteczny sposób podziału jednego dokumentu na wiele dokumentów według nagłówków lub sekcji. Można również podzielić dokument na strony lub zakresy stron. Obie opcje podziału zostaną opisane w tym artykule.

Aby podzielić dokument na mniejsze pliki używając Aspose.Words, należy wykonać następujące czynności:

  1. Wczytaj dokument w dowolnym obsługiwanym formacie.
  2. Podziel dokument.
  3. Zapisz dokumenty wyjściowe.

Po podzieleniu dokumentu, będziesz mógł otworzyć wszystkie dokumenty wyjściowe, które zaczną się od wymaganych stron, tekstu itp.

Podziel dokument używając różnych kryteriów

Aspose.Words pozwala podzielić dokumenty EPUB lub HTML na rozdziały według różnych kryteriów. W procesie, styl i układ dokumentu źródłowego są zachowane dla dokumentów wyjściowych.

Można określić kryteria za pomocą DocumentSplitCriteria wyliczenie. Więc można podzielić dokument na rozdziały używając jednego z następujących kryteriów lub połączyć więcej niż jedno kryterium razem:

  • punkt nagłówkowy,
  • przerwa w sekcji,
  • przerwa w kolumnie,
  • Przerwa na stronę.

Podczas zapisywania wyjścia do HTML, Aspose.Words zapisać każdy rozdział jako oddzielny plik HTML. W rezultacie dokument zostanie podzielony na wiele plików HTML. Podczas zapisywania wyjścia do EPUB, Aspose.Words zapisać wynik w jednym pliku EPUB niezależnie od DocumentSplitCriteria wartość, której użyłeś. Tak więc, używając DocumentSplitCriteria dla dokumentów EPUB wpływa tylko na wygląd ich treści w aplikacjach czytelników: zawartość zostanie podzielona na rozdziały i dokument nie będzie już wydawać się ciągły.

W tej części rozważamy tylko niektóre z możliwych kryteriów podziału.

Podziel dokument na nagłówki

Aby podzielić dokument na rozdziały według nagłówków, należy użyć HeadingParagraph wartość DocumentSplitCriteria nieruchomości.

Jeżeli musisz podzielić dokument na określony poziom akapitów nagłówków, takich jak pozycje 1, 2 i 3, użyj również DocumentSplitHeadingLevel nieruchomości. Wyjście zostanie podzielone przez paragrafy sformatowane określonym poziomem nagłówka.

Poniższy przykład kodu pokazuje jak podzielić dokument na mniejsze części według nagłówków:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Word document
Document doc = new Document(dataDir + "Test File (doc).docx");
HtmlSaveOptions options = new HtmlSaveOptions();
// Split a document into smaller parts, in this instance split by heading
options.setDocumentSplitCriteria(DocumentSplitCriteria.HEADING_PARAGRAPH);
// Save the output file
doc.save(dataDir + "SplitDocumentByHeadings_out.html", options);

Należy pamiętać, że w przypadku tych kryteriów, Aspose.Words Tylko obsługuje zapisywanie do formatu HTML podczas dzielenia.

Podczas zapisywania do EPUB, dokument nie jest podzielony na kilka plików i będzie tylko jeden plik wyjściowy.

Podziel dokument na sekcje

Aspose.Words pozwala również na użycie przerw sekcji, aby podzielić dokumenty i zapisać je na HTML. W tym celu należy użyć SectionBreak jako DocumentSplitCriteria:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Word document
Document doc = new Document(dataDir + "Test File (doc).docx");
HtmlSaveOptions options = new HtmlSaveOptions();
// Split a document into smaller parts, in this instance split by heading
options.setDocumentSplitCriteria(DocumentSplitCriteria.SECTION_BREAK);
// Save the output file
doc.save(dataDir + "SplitDocumentByHeadings_out.html", options);

Istnieje inny sposób, aby podzielić dokument źródłowy na wiele dokumentów wyjściowych i można wybrać dowolny format wyjściowy obsługiwany przez Aspose.Words.

Poniższy przykład kodu pokazuje jak podzielić dokument na mniejsze części według przerw sekcji (bez użycia DocumentSplitCriteria nieruchomości):

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
// Open a Word document
Document doc = new Document(dataDir + "TestFile (Split).docx");
for (int i = 0; i < doc.getSections().getCount(); i++)
{
// Split a document into smaller parts, in this instance split by section
Section section = doc.getSections().get(i).deepClone();
Document newDoc = new Document();
newDoc.getSections().clear();
Section newSection = (Section) newDoc.importNode(section, true);
newDoc.getSections().add(newSection);
// Save each section as a separate document
newDoc.save(dataDir + "SplitDocumentBySectionsOut_" + i + ".docx");
}

Podział według stron

Możesz również podzielić stronę dokumentu na stronę, przedziały stron lub rozpocząć od podanych numerów stron. W takim przypadku ExtractPages Metoda może to zrobić.

W niniejszej sekcji opisano kilka przypadków korzystania z dokumentów podzielonych przez paged Document klasa i ExtractPages Metoda.

Podziel stronę dokumentu po stronie

Aspose.Words pozwala podzielić wielostronną stronę dokumentu po stronie.

Poniższy przykład kodu pokazuje jak podzielić dokument i zapisać każdą stronę jako oddzielny dokument:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "TestFile (Split).docx");
int pageCount = doc.getPageCount();
// Save each page as a separate document.
for (int page = 0; page <= pageCount; page++)
{
Document extractedPage = doc.extractPages(page, 1);
extractedPage.save(dataDir + "SplitDocumentPageByPageOut_" + (page + 1) + ".docx");
}

Podziel dokument na rangi stron

Aspose.Words pozwala na podzielenie wielostronnego dokumentu według zakresów stron. Możesz podzielić jeden plik na wiele plików z różnymi zakresami stron lub po prostu wybrać jeden zakres i zapisać tylko tę część dokumentu źródłowego. Zauważ, że możesz wybrać zakres strony zgodnie z maksymalnym i minimalnym numerem strony dokumentu.

Poniższy przykład kodu pokazuje jak podzielić dokument na mniejsze części według zakresu stron z określonymi indeksami początkowymi i końcowymi:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
Document doc = new Document(dataDir + "TestFile (Split).docx");
// Get part of the document.
Document extractedPages = doc.extractPages(3, 6);
extractedPages.save(dataDir + "SplitDocumentByPageRangeOut.docx");

Opcja wywołania zapisu dokumentu

Można użyć DocumentPartSavingCallback właściwość do kontrolowania jak Aspose.Words zapisuje części dokumentów, gdy ten dokument jest eksportowany do formatu HTML. Ta właściwość pozwala na zmianę nazwy plików wyjściowych lub nawet przekierowanie ich do niestandardowych strumieni.

Należy pamiętać, że to wywołanie nie jest przydatne podczas zapisywania do EPUB, ponieważ wszystkie części wyjściowe muszą być zapisane do jednego pojemnika - pliku .epub. Tak więc przekierowanie strumienia nie jest obsługiwane, a efekt zmiany nazwy nie jest widoczny, ponieważ pliki są zmieniane wewnątrz pojemnika.

Połącz podzielony dokument z innym dokumentem

Aspose.Words umożliwia połączenie dokumentu wyjściowego podzielonego z innym dokumentem w celu utworzenia nowego dokumentu. Można to nazwać połączeniem dokumentu.

Poniższy przykład kodu pokazuje jak połączyć podzielony dokument z innym dokumentem:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java
public static void MergeDocuments(String dataDir) throws Exception{
// Find documents using for merge
File f = new File(dataDir);
FilenameFilter filter = new FilenameFilter() {
@Override
public boolean accept(File f, String name) {
return name.endsWith(".docx");
}
};
String[] documentPaths = f.list(filter);
String sourceDocumentPath = dataDir + documentPaths[0];
// Open the first part of the resulting document
Document sourceDoc = new Document(sourceDocumentPath);
// Create a new resulting document
Document mergedDoc = new Document();
DocumentBuilder mergedDocBuilder = new DocumentBuilder(mergedDoc);
// Merge document parts one by one
for (String documentPath : documentPaths)
{
String documentPathFull = dataDir + documentPath;
if (documentPathFull == sourceDocumentPath)
continue;
mergedDocBuilder.moveToDocumentEnd();
mergedDocBuilder.insertDocument(sourceDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
sourceDoc = new Document(documentPathFull);
}
// Save the output file
mergedDoc.save(dataDir + "MergeDocuments_out.docx");
}