Исправление некоторого содержимого в конце первой страницы в виде слов java

Недавно я работаю с apose words java.

На моей первой странице у меня есть таблица, которую нужно объединить, которая может увеличиваться до любого размера, без фиксированного количества строк, и в конце моей первой страницы я хочу, чтобы некоторый контент (например, контактные данные) был исправлен. (Примечание: я не могу хранить контактную информацию в нижнем колонтитуле или в разделе сносок из-за некоторого форматирования, которое мне нужно обеспечить, что не может поддерживаться в разделе нижнего колонтитула или сноски)

При росте таблицы столько строк Мой контент уменьшается, Но я хочу исправить это в конце моей первой страницы. если таблица увеличивается в размере, нужно пропустить содержимое и отобразить таблицу на следующей странице.

есть ли какое-либо решение/обходной путь для этого?

Мои ожидаемые результаты, как показано ниже....

Начало страницы 1

динамическая таблица row1

динамическая таблица row2

динамическая таблица row3

Контактные данные, которые я хотел исправить, в конце моей первой страницы

Конец страницы 1

Начало со страницы 2

строка динамической таблицы 4

строка динамической таблицы 5

........


person Gopal    schedule 22.04.2015    source источник


Ответы (1)


Для вашего сценария в идеале контактные данные должны быть указаны в нижнем колонтитуле. Можно, но очень рискованно.

Сначала создайте новый документ в Aspose.Words или MS Word, он будет использоваться как шаблон.

  1. Добавьте пустую таблицу сверху
  2. Добавьте контактную информацию после пустой таблицы
  3. Добавить закладку после контактных данных

Шаблон документа

Теперь, используя Aspose.Words, вы можете проверять местоположение закладки каждый раз, когда добавляете новую строку в таблицу. Если закладка находится на странице 1, добавьте новую строку в первую таблицу. Если закладка находится на странице 2, добавьте новую строку во вторую таблицу. Ниже приведен пример кода, который добавляет строки в таблицу, сохраняя контактную информацию фиксированной на странице 1.

Шаблон документа: ссылка на диск Google. Исходный код Java приведен ниже.

public static void main(String[] args)
{
    try
    {
        String template = Common.DATA_DIR + "Contact Template.docx";
        String saveDocument = Common.DATA_DIR + "Contact with tables.docx";
        String bookmarkNameContact = "ContactEnd";

        // Load the template
        com.aspose.words.Document wordDoc = new com.aspose.words.Document(template);
        DocumentBuilder builder = new DocumentBuilder(wordDoc);

        // Find the contacts bookmark
        com.aspose.words.Bookmark bookmarkContact = wordDoc.getRange().getBookmarks().get(bookmarkNameContact);

        // Set the table with null
        com.aspose.words.Table table = null;

        // Add some rows
        for (int i = 0; i < 50; i++)
        {
            // If contacts bookmark is on 1st page, add new rows to first table
            if (getBookmarkPage(wordDoc, bookmarkContact) == 1)
            {
                table = (com.aspose.words.Table) wordDoc.getChild(NodeType.TABLE, 0, true);
            } else
            {
                // If the contacts bookmark is on second page, add rows to second table
                table = (com.aspose.words.Table) wordDoc.getChild(NodeType.TABLE, 1, true);
                // If there is no second table, create it
                if (table == null)
                {
                    table = createNewTable(wordDoc, bookmarkContact);
                }
            }

            // Add rows dynamically to either first or second table
            addRow(wordDoc, table, "some text " + i);
        }

        // Save the document
        wordDoc.save(saveDocument);

    } catch (Exception ex)
    {
        System.err.println(ex.getMessage());
    }
}

private static com.aspose.words.Table createNewTable(com.aspose.words.Document wordDoc, com.aspose.words.Bookmark bookmarkContact) throws Exception
{
    // Get the first table and clone it to create the second one
    com.aspose.words.Table firstTable = (com.aspose.words.Table) wordDoc.getChild(NodeType.TABLE, 0, true);
    com.aspose.words.Table table = (com.aspose.words.Table) firstTable.deepClone(true);

    // Add the second table after the bookmark
    bookmarkContact.getBookmarkEnd().getParentNode().getParentNode().appendChild(table);

    // Delete all its rows
    table.getRows().clear();

    return table;
}

// Add a new row to the table
private static void addRow(com.aspose.words.Document wordDoc, com.aspose.words.Table table, String text)
{
    // Create a new row
    com.aspose.words.Row row = new com.aspose.words.Row(wordDoc);
    row.getRowFormat().setAllowBreakAcrossPages(true);
    // Add it to the table
    table.appendChild(row);
    // Add cells to the row
    for (int iCell = 0; iCell < 4; iCell++)
    {
        // Create a new cell and set text inside it
        com.aspose.words.Cell cell = new com.aspose.words.Cell(wordDoc);
        cell.appendChild(new com.aspose.words.Paragraph(wordDoc));
        cell.getFirstParagraph().appendChild(new Run(wordDoc, text));
        cell.getFirstParagraph().getParagraphFormat().setSpaceAfter(0);

        row.appendChild(cell);
    }
}

private static int getBookmarkPage(com.aspose.words.Document wordDoc, com.aspose.words.Bookmark bookmarkContact) throws Exception
{
    // Find the page number, where our contacts bookmark is
    LayoutCollector collector = new LayoutCollector(wordDoc);
    return collector.getStartPageIndex(bookmarkContact.getBookmarkEnd());
}

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

person Saqib Razzaq    schedule 23.04.2015
comment
@Saquib, спасибо за ответ. Мы попробуем ваше решение. - person Gopal; 23.04.2015