Dividir un Documento
Splitting o split a document es el proceso de dividir un documento grande en un mayor número de archivos más pequeños. Hay varias razones para dividir un archivo. Por ejemplo, solo necesita algunas páginas de un documento específico y no todo el documento. O, por motivos de privacidad, desea compartir solo algunas partes de un documento con otras personas. Con la función de división, puede obtener solo las partes requeridas del documento y realizar las acciones necesarias con ellas, por ejemplo, marcar, guardar o enviar.
Aspose.Words le proporciona una forma eficiente de dividir un documento en varios documentos por encabezados o secciones. También puede dividir un documento por páginas o por rangos de páginas. Ambas opciones de división se describirán en este artículo.
Para dividir un documento en archivos más pequeños usando Aspose.Words, debe seguir estos pasos:
- Cargue el documento en cualquier formato compatible.
- Divida el documento.
- Guarde los documentos de salida.
Después de dividir un documento, podrá abrir todos los documentos de salida que comenzarán con las páginas, el texto, etc. requeridos.
Pruébalo en línea
Puede probar esta funcionalidad con nuestro Divisor de documentos en línea gratuito.
Dividir un Documento Utilizando Diferentes Criterios
Aspose.Words le permite dividir EPUB o HTML documentos en capítulos de acuerdo con varios criterios. En el proceso, el estilo y el diseño del documento de origen se conservan para los documentos de salida.
Puede especificar criterios utilizando la enumeración DocumentSplitCriteria. Por lo tanto, puede dividir un documento en capítulos utilizando uno de los siguientes criterios o combinar más de un criterio:
- párrafo de encabezado,
- salto de sección,
- salto de columna,
- salto de página.
Al guardar el resultado en HTML, Aspose.Words guarde cada capítulo individual como un archivo HTML separado. Como resultado, el documento se dividirá en varios HTML archivos. Al guardar la salida en EPUB, Aspose.Words guarde el resultado en un solo archivo EPUB independientemente del valor DocumentSplitCriteria
que haya utilizado. Por lo tanto, el uso de DocumentSplitCriteria para EPUB documentos solo afecta la apariencia de su contenido en las aplicaciones de lector: el contenido se dividirá en capítulos y el documento ya no parecerá continuo.
En esta sección, consideramos solo algunos de los posibles criterios de división.
Dividir un documento por Encabezados
Para dividir un documento en capítulos por encabezados, use el valor HeadingParagraph de la propiedad DocumentSplitCriteria.
Si necesita dividir un documento por un nivel específico de párrafos de encabezado, como los encabezados 1, 2 y 3, use también la propiedad DocumentSplitHeadingLevel. La salida se dividirá por párrafos formateados con el nivel de encabezado especificado.
El siguiente ejemplo de código muestra cómo dividir un documento en partes más pequeñas por encabezado:
// 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); |
Tenga en cuenta que para este criterio, Aspose.Words solo admite guardar en formato HTML al dividir.
Al guardar en EPUB, el documento no se divide en varios archivos y solo habrá un archivo de salida.
Dividir un documento por Secciones
Aspose.Words también le permite usar saltos de sección para dividir documentos y guardarlos en HTML. Para este propósito, use SectionBreak como 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); |
Hay otra forma de dividir el documento de origen en varios documentos de salida, y puede elegir cualquier formato de salida compatible con Aspose.Words.
El siguiente ejemplo de código muestra cómo dividir un documento en partes más pequeñas mediante saltos de sección (sin usar la propiedad 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 + "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"); | |
} |
Dividido por páginas
También puede dividir un documento página por página, por rangos de páginas o comenzando con los números de página especificados. En tal caso, el método ExtractPages puede hacer el trabajo.
En esta sección se describen varios casos de uso de dividir documentos por paginación utilizando la clase Document y el método ExtractPages.
Dividir un Documento Página por página
Aspose.Words le permite dividir un documento de varias páginas página por página.
El siguiente ejemplo de código muestra cómo dividir un documento y guardar cada página como un documento separado:
// 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"); | |
} |
Dividir un Documento por Rangos de páginas
Aspose.Words permite dividir un documento de varias páginas por rangos de páginas. Puede dividir un archivo en varios archivos con varios rangos de páginas o simplemente seleccionar un rango y guardar solo esta parte del documento de origen. Tenga en cuenta que puede elegir el rango de páginas de acuerdo con el número de página máximo y mínimo de un documento.
El siguiente ejemplo de código muestra cómo dividir un documento en partes más pequeñas por rango de páginas con índices de inicio y finalización específicos:
// 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"); |
Opción de Devolución de llamada para Guardar un Documento
Puede usar la propiedad DocumentPartSavingCallback para controlar cómo Aspose.Words guarda las partes del documento cuando este documento se exporta al formato HTML. Esta propiedad le permite cambiar el nombre de los archivos de salida o incluso redirigirlos a secuencias personalizadas.
Tenga en cuenta que esta devolución de llamada no es útil cuando se guarda en EPUB porque todas las partes de salida deben guardarse en un solo contenedor: the .archivo epub. Por lo tanto, no se admite la redirección de secuencias y el efecto de cambiar el nombre no es visible ya que los archivos se renombran dentro del contenedor.
Fusionar el Documento Dividido con Otro Documento
Aspose.Words le permite fusionar el documento dividido de salida con otro documento para formar un nuevo documento. A esto se le puede llamar fusión de documentos.
El siguiente ejemplo de código muestra cómo fusionar un documento dividido con otro documento:
// 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"); | |
} |