Bölümlerle Çalışma

Bazen tüm sayfalarda aynı biçimlendirme olmayan bir belge istiyorsunuz. Örneğin, sayfa numaralarını değiştirmek, farklı sayfa boyutları ve yönlendirmeleri veya herhangi bir numaralandırma olmadan ilk belgeyi kapak sayfası olarak kullanmak gibi ihtiyaçlarınız olabilir. Bölümler aracılığıyla bunu başarabilirsiniz.

Bölümleri, başlıkları ve altbilgileri, yönlendirmeyi, sütunları, kenar boşluklarını, sayfa numaralandırma biçimlendirmesini ve diğerleri kontrol eden seviye düğümleri.

Aspose.Words size belgenin bölümlerini yönetme, bir belgeyi bölümlere ayırma ve yalnızca belirli bir bölüme uygulanacak biçimlendirme değişiklikleri yapma imkanı sağlar. Aspose.Words başlıklar ve alt yazı, sayfa düzeni ve sütun ayarları gibi bölüm biçimi hakkında bilgi depolar.

Bu makale bölümler ile bölüm aramalarıyla nasıl çalıştığını açıklar.

Neyin Bölüm ve Bölüm Kesme

Belge bölümleri Section ve SectionCollection sınıfları tarafından temsil edilir. Bölüm nesneleri, Document düğümüne bağlı doğrudan çocuklardır ve Sections özelliği aracılığıyla erişilebilir. Bu düğümleri Remove, Add, IndexOf gibi bazı yöntemler kullanarak yönetebilirsiniz.

Bölüm araması, belgenin sayfalarını özelleştirilebilir düzenlerle bölümler halinde bölen bir seçenektir.

Bir Bölüm Kesintisinin Türleri

Aspose.Words size BreakType numaralandırma türündeki farklı bölüm kesintileriyle belgeleri bölme ve biçimlendirme imkanı sunar:

-SectionBreakContinuous

  • SectionBreakNewColumn -SectionBreakNewPage
  • SectionBreakEvenPage -SectionBreakOddPage

YeniSütun, YeniSayfa, EşittirSayfa ve ZıtSayfa gibi yalnızca ilk bölüm için geçerli olan bir kesme türü seçmek için SectionStart numaralandırmayı da kullanabilirsiniz.

Bir Bölümü Yönet

Çünkü bölüm bir normal bileşik düğüm, tüm düğüm manipülasyonu API bölümlerin manipüle edilmesi için kullanılabilir: ekleme, kaldırma ve diğer bölümler üzerindeki işlemler. Düğümler hakkında daha fazla bilgi için makaleyi Aspose.Words Document Object Model (DOM) okuyabilirsiniz.

Öte yandan, bölümlere çalışmak için de DocumentBuilder API kullanabilirsiniz. Bu makaledeki odak nokta bu özel bölüm çalışma şekli olacaktır.

Bir Bölüm Boşluğu Ekle veya Kaldır

1 InsertBreak‘ı kullanarak metne bir bölüm kırma eklemenizi sağlayan Aspose.Words’i tanımlar.

Aşağıdaki kod örneği bir belgenin içine bir bölüm kesintisi eklemeyi gösterir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
/// <summary>
/// Insert section breaks before the specified paragraphs.
/// </summary>
private void insertSectionBreaks(ArrayList<Paragraph> topicStartParas)
{
DocumentBuilder builder = new DocumentBuilder(mDoc);
for (Paragraph para : topicStartParas)
{
Section section = para.getParentSection();
// Insert section break if the paragraph is not at the beginning of a section already.
if (para != section.getBody().getFirstParagraph())
{
builder.moveTo(para.getFirstChild());
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
// This is the paragraph that was inserted at the end of the now old section.
// We don't really need the extra paragraph, we just needed the section.
section.getBody().getLastParagraph().remove();
}
}
}

Bir bölme kırıklığını silmek için Remove yöntemini kullanın. Belirli bir bölme kırıklığını kaldırmanız gerekmiyorsa ve bunun yerine bu bölümün içeriğini silmeniz gerekiyorsa ClearContent yöntemini kullanabilirsiniz.

Aşağıdaki kod örneği, nasıl bölüm kesintileri kaldırılacağını gösterir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
private void removeSectionBreaks(Document doc)
{
// Loop through all sections starting from the section that precedes the last one and moving to the first section.
for (int i = doc.getSections().getCount() - 2; i >= 0; i--)
{
// Copy the content of the current section to the beginning of the last section.
doc.getLastSection().prependContent(doc.getSections().get(i));
// Remove the copied section.
doc.getSections().get(i).remove();
}
}

Bir Bölümü Taşı

Bir belge içinde bir bölümden başka bir konuma taşımak istiyorsanız, o bölümün dizinini almanız gerekir. Aspose.Words size bir SectionCollection içindeki bir bölüm pozisyonunu almanıza olanak tanır. Bir belgenizdeki tüm bölümleri almak için Sections özelliğini kullanabilirsiniz. Ancak sadece ilk bölümü almak istiyorsanız, FirstSection özelliğini kullanabilirsiniz.

Aşağıdaki kod örneği ilk bölüme erişmeyi ve bir bileşik düğümün çocuklarını yinelemeyi gösterir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.write("Section 1");
builder.moveToHeaderFooter(HeaderFooterType.HEADER_PRIMARY);
builder.write("Primary header");
builder.moveToHeaderFooter(HeaderFooterType.FOOTER_PRIMARY);
builder.write("Primary footer");
Section section = doc.getFirstSection();
// A Section is a composite node and can contain child nodes,
// but only if those child nodes are of a "Body" or "HeaderFooter" node type.
for (Node node : section)
{
switch (node.getNodeType())
{
case NodeType.BODY:
{
Body body = (Body)node;
System.out.println("Body:");
System.out.println(MessageFormat.format("\t\"{0}\"", body.getText().trim()));
break;
}
case NodeType.HEADER_FOOTER:
{
HeaderFooter headerFooter = (HeaderFooter)node;
System.out.println(MessageFormat.format("HeaderFooter type: {0}:", headerFooter.getHeaderFooterType()));
System.out.println(MessageFormat.format("\t\"{0}\"", headerFooter.getText().trim()));
break;
}
default:
{
throw new Exception("Unexpected node type in a section.");
}
}
}

Bir Bölüm Düzeni Belirt

Bazen belgenizin farklı bölümlerini yaratıcı düzenler yaparak daha iyi görünmesini istiyorsunuz. Mevcut bölüm kılavuzunun türünü belirtmek istiyorsanız, SectionLayoutMode numaralandırmasından bir bölüm düzeni modu seçebilirsiniz:

  • Varsayılan
  • Kılavuz
  • LineGrid -SnapToChars

Aşağıdaki kod örneğinde her sayfanın sahip olabileceği satır sayısını nasıl sınırlayacağınız gösterilmektedir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
// Enable pitching, and then use it to set the number of lines per page in this section.
// A large enough font size will push some lines down onto the next page to avoid overlapping characters.
builder.getPageSetup().setLayoutMode(SectionLayoutMode.LINE_GRID);
builder.getPageSetup().setLinesPerPage(15);
builder.getParagraphFormat().setSnapToGrid(true);
for (int i = 0; i < 30; i++)
builder.write("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. ");
doc.save(getArtifactsDir() + "WorkingWithDocumentOptionsAndSettings.LinesPerPage.docx");

[Bir bölümü düzenleme]

Bir belgeye yeni bir bölüm eklediğinizde, düzenleyebileceğiniz herhangi bir gövde veya paragraf olmayacak. Aspose.Words’i kullanarak, EnsureMinimum yöntemiyle bölümün en az bir paragraf içeren bir gövdesi olduğundan emin olmanıza izin verir – bunu belgenin üzerine otomatik olarak bir Gövde (veya BaşlıkAltBilgi) düğümü ekler ve sonra buna bir Paragraf ekler.

Aşağıdaki kod örneği, EnsureMinimum kullanarak yeni bir bölüm düğümü hazırlamayı gösterir

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
// If we add a new section like this, it will not have a body, or any other child nodes.
doc.getSections().add(new Section(doc));
// Run the "EnsureMinimum" method to add a body and a paragraph to this section to begin editing it.
doc.getLastSection().ensureMinimum();
doc.getSections().get(0).getBody().getFirstParagraph().appendChild(new Run(doc, "Hello world!"));

İçeriği Ekle veya Ön ekle

Bir şekil çizmek veya bir bölümün başına / sonuna metin veya görüntü eklemek istiyorsanız, AppendContent ve PrependContent yöntemlerini Section sınıfını kullanabilirsiniz.

Aşağıdaki kod örneğinde mevcut bir bölümün içeriğini nasıl ekleyeceğinizi gösterir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.write("Section 1");
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
builder.write("Section 2");
builder.insertBreak(BreakType.SECTION_BREAK_NEW_PAGE);
builder.write("Section 3");
// This is the section that we will append and prepend to.
Section section = doc.getSections().get(2);
// Insert the contents of the first section to the beginning of the third section.
Section sectionToPrepend = doc.getSections().get(0);
section.prependContent(sectionToPrepend);
// Insert the contents of the second section to the end of the third section.
Section sectionToAppend = doc.getSections().get(1);
section.appendContent(sectionToAppend);

Bir Bölümü Kopyala

Aspose.Words size, deepClone yöntemi kullanılarak tam bir kopyasını oluşturarak bir bölümü çoğaltmanıza izin verir.

Aşağıdaki kod örneği belgenizdeki ilk bölümün nasıl klonlanacağını göstermektedir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document(getMyDir() + "Document.docx");
Section cloneSection = doc.getSections().get(0).deepClone();

Belgeler Arasında Bölümleri Kopyala

Bazı durumlarda büyük belgeler ile birçok bölümünüz olabilir ve bir belgeden diğerine bir bölümün içeriğini kopyalamak isteyebilirsiniz.

Aspose.Words belgeleri arasında bölümler kopyalamak için kullanılan ImportNode yöntemi ile size izin verir.

Aşağıdaki kod örneği, belgelar arasında bölümler nasıl kopyalanacağını göstermektedir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document srcDoc = new Document(getMyDir() + "Document.docx");
Document dstDoc = new Document();
Section sourceSection = srcDoc.getSections().get(0);
Section newSection = (Section) dstDoc.importNode(sourceSection, true);
dstDoc.getSections().add(newSection);
dstDoc.save(getArtifactsDir() + "WorkingWithSection.CopySection.docx");

Bölüm Başlığı ve Altbilgisi ile Çalışın

Her bölüm için bir başlık veya altbilgi görüntülemek için temel kurallar oldukça basittir:

  1. Eğer bölüm kendi başına belirli bir tür başlık / altbilgiye sahip değilse, o zaman önceki bölümden alınır.
  2. Sayfanın başlık/altbilgisinin görünümü “Farklı İlk Sayfa” ve “Farklı Tek ve Çift Sayfalar” bölüm ayarları tarafından kontrol edilir – eğer bunlar devre dışı bırakılırsa, bölümün kendi başlıkları göz ardı edilir.

Aşağıdaki kod örneğinde farklı başlıklar ile iki bölüm oluşturmayı gösterir:

Başlık ve altbilgileri kaldırmak istiyorsanız ancak HeaderFooter nesnenizi belgenizden kaldırmayın, bunu yapmak için ClearHeadersFooters yöntemini kullanabilirsiniz. Ayrıca, tüm şekilleri başlıklardan ve altbilgilerden kaldırmak için DeleteHeaderFooterShapes yöntemini de kullanabilirsiniz.

Aşağıdaki kod örneği, bir bölümdeki tüm başlıkların ve altbilgilerin içeriğini temizlemek için nasıl yapılacağını göstermektedir:

Aşağıdaki kod örneği bir bölümdeki tüm başlıklardan ve altbilgilerinden tüm şekillerin nasıl kaldırılacağını gösterir:

Bölgede Sayfa Özelliklerini Özelleştirin

Bir sayfayı ya da belgenin yazdırılmadan önce tek bir sayfanın ya da bütün belgenin boyutunu ve düzenini özelleştirmek ve değiştirmek isteyebilirsiniz. Sayfa Kurulumu ile, farklı ilk sayfalar veya tekil sayfalar için kenar boşlukları, yönlendirme ve boyut gibi belge sayfalarının ayarlarını değiştirebilirsiniz.

Aspose.Words size sayfa ve bölüm özelliklerini PageSetup sınıfı kullanarak özelleştirmenizi sağlar.

Aşağıdaki kod örneği, geçerli bölüme sayfa boyutu ve yönelim gibi özellikleri nasıl ayarlayacağını göstermektedir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.getPageSetup().setOrientation(Orientation.LANDSCAPE);
builder.getPageSetup().setLeftMargin(50.0);
builder.getPageSetup().setPaperSize(PaperSize.PAPER_10_X_14);
doc.save(getArtifactsDir() + "WorkingWithDocumentOptionsAndSettings.SetPageSetupAndSectionFormatting.docx");

Aşağıdaki kod örneğinde tüm bölümlerde sayfa özelliklerini nasıl değiştireceğinizi gösterir:

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);
builder.writeln("Section 1");
doc.appendChild(new Section(doc));
builder.writeln("Section 2");
doc.appendChild(new Section(doc));
builder.writeln("Section 3");
doc.appendChild(new Section(doc));
builder.writeln("Section 4");
// It is important to understand that a document can contain many sections,
// and each section has its page setup. In this case, we want to modify them all.
for (Section section : doc.getSections())
section.getPageSetup().setPaperSize(PaperSize.LETTER);
doc.save(getArtifactsDir() + "WorkingWithSection.ModifyPageSetupInAllSections.doc");

Ayrıca bakınız