Metode Pembantu untuk Mengekstrak Konten di Aspose.Words untuk Java
Pengenalan Metode Pembantu untuk Mengekstrak Konten di Aspose.Words untuk Java
Aspose.Words untuk Java adalah pustaka canggih yang memungkinkan pengembang bekerja dengan dokumen Word secara terprogram. Salah satu tugas umum saat bekerja dengan dokumen Word adalah mengekstrak konten dari dokumen tersebut. Dalam artikel ini, kami akan membahas beberapa metode bantuan untuk mengekstrak konten secara efisien menggunakan Aspose.Words untuk Java.
Prasyarat
Sebelum kita menyelami contoh kode, pastikan Anda telah menginstal dan mengatur Aspose.Words untuk Java di proyek Java Anda. Anda dapat mengunduhnya dariDi Sini.
Metode Pembantu 1: Mengekstrak Paragraf Berdasarkan Gaya
public static ArrayList<Paragraph> paragraphsByStyleName(Document doc, String styleName) {
// Buat array untuk mengumpulkan paragraf dengan gaya yang ditentukan.
ArrayList<Paragraph> paragraphsWithStyle = new ArrayList<Paragraph>();
NodeCollection paragraphs = doc.getChildNodes(NodeType.PARAGRAPH, true);
// Lihat semua paragraf untuk menemukan paragraf dengan gaya yang ditentukan.
for (Paragraph paragraph : (Iterable<Paragraph>) paragraphs) {
if (paragraph.getParagraphFormat().getStyle().getName().equals(styleName))
paragraphsWithStyle.add(paragraph);
}
return paragraphsWithStyle;
}
Anda dapat menggunakan metode ini untuk mengekstrak paragraf yang memiliki gaya tertentu dalam dokumen Word Anda. Ini berguna saat Anda ingin mengekstrak konten dengan format tertentu, seperti judul atau kutipan blok.
Metode Pembantu 2: Mengekstrak Konten berdasarkan Node
public static ArrayList<Node> extractContentBetweenNodes(Node startNode, Node endNode, boolean isInclusive) {
// Pertama, periksa apakah node yang diteruskan ke metode ini valid untuk digunakan.
verifyParameterNodes(startNode, endNode);
// Buat daftar untuk menyimpan node yang diekstrak.
ArrayList<Node> nodes = new ArrayList<Node>();
// Jika salah satu penanda merupakan bagian dari komentar, termasuk komentar itu sendiri, kita perlu memindahkan penunjuk
// meneruskan ke Node Komentar yang ditemukan setelah node CommentRangeEnd.
if (endNode.getNodeType() == NodeType.COMMENT_RANGE_END && isInclusive) {
Node node = findNextNode(NodeType.COMMENT, endNode.getNextSibling());
if (node != null)
endNode = node;
}
// Simpan catatan node asli yang diteruskan ke metode ini untuk membagi node penanda jika diperlukan.
Node originalStartNode = startNode;
Node originalEndNode = endNode;
//Ekstrak konten berdasarkan node tingkat blok (paragraf dan tabel). Telusuri node induk untuk menemukannya.
// Kami akan membagi konten node pertama dan terakhir, tergantung pada apakah node penandanya sebaris.
startNode = getAncestorInBody(startNode);
endNode = getAncestorInBody(endNode);
boolean isExtracting = true;
boolean isStartingNode = true;
// Node saat ini yang kita ekstrak dari dokumen.
Node currNode = startNode;
// Mulai mengekstraksi konten. Proses semua node tingkat blok dan khususnya pisahkan node pertama
// dan simpul terakhir bila diperlukan sehingga format paragraf dipertahankan.
// Metode ini sedikit lebih rumit daripada ekstraktor biasa karena kita perlu memfaktorkan
// dalam mengekstrak menggunakan node sebaris, bidang, penanda, dll., untuk membuatnya berguna.
while (isExtracting) {
// Kloning node saat ini dan anak-anaknya untuk memperoleh salinannya.
Node cloneNode = currNode.deepClone(true);
boolean isEndingNode = currNode.equals(endNode);
if (isStartingNode || isEndingNode) {
// Kita perlu memproses setiap penanda secara terpisah, jadi serahkan saja ke metode terpisah.
// Akhir harus diproses terlebih dahulu untuk mempertahankan indeks simpul.
if (isEndingNode) {
// !isStartingNode: jangan menambahkan node dua kali jika penandanya adalah node yang sama.
processMarker(cloneNode, nodes, originalEndNode, currNode, isInclusive,
false, !isStartingNode, false);
isExtracting = false;
}
//Kondisi perlu dipisahkan karena penanda awal dan akhir tingkat blok mungkin merupakan simpul yang sama.
if (isStartingNode) {
processMarker(cloneNode, nodes, originalStartNode, currNode, isInclusive,
true, true, false);
isStartingNode = false;
}
} else
// Node bukanlah penanda awal atau akhir, cukup tambahkan salinannya ke daftar.
nodes.add(cloneNode);
// Pindah ke node berikutnya dan ekstrak. Jika node berikutnya null,
// sisa konten ditemukan di bagian yang berbeda.
if (currNode.getNextSibling() == null && isExtracting) {
// Pindah ke bagian berikutnya.
Section nextSection = (Section) currNode.getAncestor(NodeType.SECTION).getNextSibling();
currNode = nextSection.getBody().getFirstChild();
} else {
// Pindah ke simpul berikutnya dalam badan.
currNode = currNode.getNextSibling();
}
}
// Untuk kompatibilitas dengan mode dengan penanda sebaris, tambahkan paragraf berikutnya (kosong).
if (isInclusive && originalEndNode == endNode && !originalEndNode.isComposite())
includeNextParagraph(endNode, nodes);
// Mengembalikan simpul di antara penanda simpul.
return nodes;
}
Metode ini memungkinkan Anda mengekstrak konten antara dua node tertentu, baik itu paragraf, tabel, atau elemen tingkat blok lainnya. Metode ini menangani berbagai skenario, termasuk penanda sebaris, kolom, dan bookmark.
Metode Pembantu 3: Membuat Dokumen Baru
public static Document generateDocument(Document srcDoc, ArrayList<Node> nodes) throws Exception {
Document dstDoc = new Document();
// Hapus paragraf pertama dari dokumen kosong.
dstDoc.getFirstSection().getBody().removeAllChildren();
// Impor setiap node dari daftar ke dalam dokumen baru. Pertahankan format asli node.
NodeImporter importer = new NodeImporter(srcDoc, dstDoc, ImportFormatMode.KEEP_SOURCE_FORMATTING);
for (Node node : nodes) {
Node importNode = importer.importNode(node, true);
dstDoc.getFirstSection().getBody().appendChild(importNode);
}
return dstDoc;
}
Metode ini memungkinkan Anda membuat dokumen baru dengan mengimpor daftar node dari dokumen sumber. Metode ini mempertahankan format asli node, sehingga berguna untuk membuat dokumen baru dengan konten tertentu.
Kesimpulan
Mengekstrak konten dari dokumen Word dapat menjadi bagian penting dari banyak tugas pemrosesan dokumen. Aspose.Words untuk Java menyediakan metode bantuan canggih yang menyederhanakan proses ini. Apakah Anda perlu mengekstrak paragraf berdasarkan gaya, konten antar node, atau membuat dokumen baru, metode ini akan membantu Anda bekerja secara efisien dengan dokumen Word di aplikasi Java Anda.
Pertanyaan yang Sering Diajukan
Bagaimana cara menginstal Aspose.Words untuk Java?
Untuk menginstal Aspose.Words untuk Java, Anda dapat mengunduhnya dari situs web Aspose. KunjungiDi Sini untuk mendapatkan versi terbaru.
Bisakah saya mengekstrak konten dari bagian tertentu dokumen Word?
Ya, Anda dapat mengekstrak konten dari bagian tertentu dokumen Word menggunakan metode yang disebutkan dalam artikel ini. Cukup tentukan simpul awal dan akhir yang menentukan bagian yang ingin Anda ekstrak.
Apakah Aspose.Words untuk Java kompatibel dengan Java 11?
Ya, Aspose.Words untuk Java kompatibel dengan Java 11 dan versi yang lebih tinggi. Anda dapat menggunakannya di aplikasi Java Anda tanpa masalah apa pun.
Dapatkah saya menyesuaikan format konten yang diekstrak?
Ya, Anda dapat menyesuaikan format konten yang diekstrak dengan memodifikasi node yang diimpor dalam dokumen yang dihasilkan. Aspose.Words untuk Java menyediakan opsi format yang luas untuk memenuhi kebutuhan Anda.
Di mana saya dapat menemukan lebih banyak dokumentasi dan contoh untuk Aspose.Words untuk Java?
Anda dapat menemukan dokumentasi dan contoh lengkap untuk Aspose.Words untuk Java di situs web Aspose. Kunjungihttps://reference.aspose.com/words/java/ untuk dokumentasi dan sumber daya terperinci.