- Перемещение страниц в PDF-файл с помощью Java
- Java Библиотека для перемещения страниц в PDF с помощью наших API.
- Как перемещать страницы в PDF с помощью Java
- Переместить страницу в PDF через Java
- Системные требования
- Перемещение страницы из одного PDF-документа в другой
- О Aspose.PDF для API Java
- Как изменить порядок страниц в Word с помощью Java
- Java API для перемещения страниц документа Word#
- Загрузите и настройте#
- Перемещение страниц в документах Word с помощью Java#
- Получите бесплатную лицензию API#
- Вывод#
- Смотрите также#
- Навигация и перенаправление
- Динамическая навигация
- Правило навигации, navigation-rule
- Перенаправление, redirect и faces-redirect
- Перелистывание страниц и ViewPager2
Перемещение страниц в PDF-файл с помощью Java
Java Библиотека для перемещения страниц в PDF с помощью наших API.
Как перемещать страницы в PDF с помощью Java
Чтобы переместить страницу, мы будем использовать Aspose.PDF для Java API, который представляет собой многофункциональный, мощный и простой в использовании API преобразования для платформы Java. Вы можете загрузить его последнюю версию непосредственно с Maven и установить ее в свой проект на базе Maven, добавив следующие конфигурации в pom.xml.
AsposeJavaAPI Aspose Java AP https://releases.aspose.com/java/repo/
com.aspose aspose-pdf version of aspose-pdf API
Переместить страницу в PDF через Java
Вам понадобится Aspose.PDF for Java, чтобы попробовать код в своей среде.
- Создайте объектДокумент с входным PDF-файлом.
- Получить страницу из коллекции PageCollection.
- Сохраните выходной PDF-файл с помощью методаSave.
- Добавьте страницу в целевой документ. Сохраните выходной файл.
- Удалить страницу в исходном документе.
- Сохраните исходный PDF-файл, используя метод Save.
Системные требования
Aspose.PDF for Java поддерживается во всех основных операционных системах. Просто убедитесь, что у вас есть следующие предварительные условия.
- Microsoft Windows или совместимая ОС с Java Framework, Java Core и PHP, VBScript, Delphi, C++ через COM Interop.
- Среда разработки, такая как Microsoft Visual Studio.
- Aspose.PDF для Java DLL, упоминаемых в вашем проекте.
Перемещение страницы из одного PDF-документа в другой
void MovePage() // Open document String _dataDir("C:\\Samples\\"); String srcFileName(""); String dstFileName(""); auto srcDocument = MakeObjectDocument>(_dataDir + srcFileName); auto dstDocument = MakeObjectDocument>(); auto page = srcDocument->get_Pages()->idx_get(2); dstDocument->get_Pages()->Add(page); // Save output file dstDocument->Save(srcFileName); srcDocument->get_Pages()->Delete(2); srcDocument->Save(dstFileName); >
О Aspose.PDF для API Java
API Aspose.PDF можно использовать для обработки PDF-документов и их разбора в приложениях. Можно создавать, изменять, сжимать, защищать, распечатывать или сохранять PDF в формате TXT, HTML, PCL, XFA, XML, XPS, EPUB, TEX, изображений и других форматов. Aspose.PDF является автономным API и не зависит от какого-либо программного обеспечения, включая Adobe Acrobat.
Subscribe to Aspose Product Updates.
Get monthly newsletters & offers directly delivered to your mailbox.
Как изменить порядок страниц в Word с помощью Java
Документы обработки текста — один из наиболее распространенных форматов файлов, которые используются для создания черновиков документов. При работе с несколькими большими файлами никогда не бывает легко перемещать страницы без потери форматирования. Чтобы переупорядочить страницы, в этой статье обсуждается, как программно перемещать страницы в документах Word (DOC/DOCX) в Java.
Java API для перемещения страниц документа Word#
GroupDocs.Merger предоставляет [Java API для работы с документами и их страницами](https://products.groupdocs.com/merger/java /). Это позволяет перемещать, удалять, разбивать документы и извлекать страницы, изменять ориентацию страниц и поворачивать страницы документа в приложениях Java. Я буду использовать этот API для перемещения страниц файлов DOC/DOCX. Для получения подробной информации и других функций API вы можете посетить документацию.
Загрузите и настройте#
Получите библиотеку из раздела загрузки. Для вашего Java-приложения на основе Maven просто добавьте следующую конфигурацию pom.xml. После этого вы можете попробовать примеры из этой статьи, а также многие другие примеры, доступные на GitHub. Для получения подробной информации вы можете посетить Справочник по API.
GroupDocsJavaAPI GroupDocs Java API http://repository.groupdocs.com/repo/ com.groupdocs groupdocs-merger 22.2
Перемещение страниц в документах Word с помощью Java#
Просто прикажите странице переместиться на новую позицию, она будет. Ниже приведены шаги, которые переупорядочивают страницы документа Word в Java.
- Установите номер целевой страницы и ее новую позицию с помощью класса MoveOptions.
- Загрузите файл DOC/DOCX с помощью класса Merger.
- Используйте метод movePage() для перемещения заданной страницы.
- Сохраните измененный документ с помощью метода save().
Следующий исходный код Java изменяет порядок страниц документа Word. А именно, он перемещает 7-ю страницу документа DOCX на 2-е место.
// Изменение порядка страниц документов Word Processing (DOC/DOCX) в Java int pageNumber = 7; int newPageNumber = 2; MoveOptions moveOptions = new MoveOptions(pageNumber, newPageNumber); Merger merger = new Merger("path\document.docx"); merger.movePage(moveOptions); merger.save("path\rearranged-document.docx");
Получите бесплатную лицензию API#
Вы можете получить бесплатную временную лицензию, чтобы использовать API без ограничений пробной версии.
Вывод#
Подводя итог, мы узнали, как изменить порядок страниц документа Word в Java. Мы видели пример исходного кода, который изменил позицию страницы в файле DOCX. Вы можете создать собственное онлайн-приложение для изменения порядка страниц Word в Интернете. Дополнительные сведения об API см. в документации. По вопросам обращайтесь к нам через форум.
Смотрите также#
Навигация и перенаправление
JSF включает в себя механизм навигации, аналогичный Struts. За переход на определенную страницу отвечает обработчик навигации (navigation handler). Фреймворк JSF в сочетании с Facelets позволяет использовать как статическую навигацию, так и динамическую навигацию.
Для простых (безусловных) переходов используется статическая навигация. Это означает, что при нажатии на кнопку или ссылку всегда приводит к отображению конкретной, заранее заданной, JSF страницы. В качестве примера можно рассмотреть следующий код :
Значение атрибута action, согласно принятому соглашению при использовании фреймворка Facelets, является наименование страницы без указания расширения ‘.xhtml’. Если результат не начинается с символа обратного слеша ‘/’ , то префикс определяется в виде пути текущего представления. Т.е. в нашем коде по нажатию на кнопку должен быть выполнен переход на страницу wellcome.xhtml. Соглашения, принятые в фреймворке Facelets, представлены на странице описания фреймворка JSF.
Динамическая навигация
В большинстве случаев навигация не является статической. Переход зависит не только от того, на какой кнопке выполнен щелчок, но и от того, какие определены входные данные. Например, отправка на сервер параметров авторизации в системе может иметь два результата: успешный и неудачный. Алгоритм обработки данных определен на сервере. Для обеспечения динамической навигации кнопка отправки должна иметь выражение метода (method expression). Пример динамической навигации :
В данном примере вызывается метод verifyUser managed bean класса userController. Выражение метода в атрибуте action не имеет параметров и возвращаемый им тип может быть любым. Возвращаемое методом значение преобразуется в строку путем вызова метода toString.
Упрощенный пример класса userController.
public class userController < public String verifyUser() < if (. ) return "success"; else return "failure"; >>
Примечание :
1. В версии JSF 1.1 в качестве возвращаемого типа можно использовать только String. Начиная с версии 1.2 разрешается использовать любой тип данных.
2. В качестве возвращаемого значения можно использовать ‘null’, указывающее, что перехода не будет, т.е. остается то же самое представление.
Бизнес-логика динамической навигации определяется в файле конфигурации faces-config.xml. Ниже приведен типичный пример :
/index.xhtml Успешная авторизация success /welcome.xhtml
Условия динамической навигации определяются тегом . Согласно правилу, определенному в примере, результат «success» должен приводить к переходу на страницу welcome.xhtml, если он возникает во время работы со страницей index.xhtml.
Правило навигации, navigation-rule
Правило навигации определяются тегом navigation-rule.
Тег | Описание |
---|---|
Правило навигации | |
Источник навигации, т.е. страница. Если правило действует на все страницы, то необходимо использовать символ ‘*’. Перед наименованием страницы необходимо вставить символ ‘/’. | |
Определение одного из вариантов правила навигации. Вариантов может быть и несколько для различных условий. | |
Комментарий к варианту перехода | |
Выполнение определенного метода. Пример «# « | |
Описание условия согласно которому выбирается данный вариант навигации. Т.е. здесь указывается одно из значений «success», «failure» и т.д. | |
Страница перехода, на которую должен быть выполнен переход. | |
Перенаправление с изменением URL страницы. |
Перенаправление, redirect и faces-redirect
Использование навигации в JSF обеспечивает условный или безусловный переход, но при этом адрес страницы url не изменяется. По умолчанию JSF при переходе с одной XHTML-страницы на другую использует переадресацию (forward). Т.е. в нашем примере при переходе со страницы index.xhtml на страницу wellcome.xhtml содержание изменилось, а url остался прежним. Для изменения url страницы при переходе необходимо выполнить перенаправление с помощью тега в файле конфигурации faces-config.xml.
/index.xhtml success /welcome.xhtml
Перенаправление в JSF происходит медленнее. Однако при перенаправлении обновляется адрес страницы.
При определении статической навигации в интерфейсе для выполнения перенаправления необходимо использовать параметр faces-redirect в параметре определения страницы :
Перелистывание страниц и ViewPager2
Нередко можно встретить приложения, которые реализуют систему перелистывания, а само приложение предстает в виде набора страниц, которые можно пролистывать влево и вправо. В приложении Android для создания подобного эффекта можно использовать элемент ViewPager2 из комплекта JetPack. Для создания эффекта страниц ViewPager2 использует фрагменты.
Итак, создадим новый проект. Добавим в папку res/layout файл разметки для фрагмента, который будет представлять страницу. Назовем его fragment_page.xml и определим в нем следующий код:
Фрагмент будет отображать текстовое поле с номером страницы.
Теперь добавим в проект сам класс фрагмента. Назовем его PageFragment :
package com.example.viewpagerapp; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import androidx.fragment.app.Fragment; public class PageFragment extends Fragment < private int pageNumber; public static PageFragment newInstance(int page) < PageFragment fragment = new PageFragment(); Bundle args=new Bundle(); args.putInt("num", page); fragment.setArguments(args); return fragment; >public PageFragment() < >@Override public void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); pageNumber = getArguments() != null ? getArguments().getInt("num") : 1; >@Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) < View result=inflater.inflate(R.layout.fragment_page, container, false); TextView pageHeader = result.findViewById(R.id.displayText); String header = "Фрагмент " + (pageNumber+1); pageHeader.setText(header); return result; >>
Переменная pageNumber указывает на номер текущей страницы. Номер страницы будет передаваться извне через фабричный метод newInstance() . Передача номера происходит путем добавления значения в аргумент «num»
Затем при создании фрагмента в методе onCreate() этот номер будет извлекаться из аргумента «num» (если аргументы определены):
pageNumber = getArguments() != null ? getArguments().getInt("num") : 1;
В методе onCreateView() полученный номер страницы будет отображаться в текстовом поле.
Сам по себе фрагмент еще не создает функциональность постраничной навигации. Для этого нам нужен один из классов PagerAdapter . Android SDK содержит ряд встроенных реализаций PagerAdapter, в частности, класс FragmentStateAdapter . Этот класс являются абстрактным, поэтому напрямую мы его использовать не можем, и нам нужно создать класс-наследник. Для этого добавим в проект новый класс, который назовем MyAdapter :
package com.example.viewpagerapp; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; public class MyAdapter extends FragmentStateAdapter < public MyAdapter(FragmentActivity fragmentActivity) < super(fragmentActivity); >@NonNull @Override public Fragment createFragment(int position) < return(PageFragment.newInstance(position)); >@Override public int getItemCount() < return 10; >>
Класс FragmentStateAdapter определяет два метода:
- int getItemCount() : возвращает количество страниц, которые будут в ViewPager2 (в нашем случае 10)
- Fragment createFragment(int position) : по номеру страницы, передаваемому в качестве параметра position, возвращает объект фрагмента
Стоит отметить, что в качестве параметра конструктор FragmentStateAdapter принимает контекст выполнения — обычно это объект FragmentActivity, но также это может быть объект Fragment
В завершении установим в файле activity_main.xml элемент ViewPager2:
И также изменим код MainActivity :
package com.example.viewpagerapp; import androidx.appcompat.app.AppCompatActivity; import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.widget.ViewPager2; import android.os.Bundle; public class MainActivity extends AppCompatActivity < @Override protected void onCreate(Bundle savedInstanceState) < super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewPager2 pager = findViewById(R.id.pager); FragmentStateAdapter pageAdapter = new MyAdapter(this); pager.setAdapter(pageAdapter); >>
Класс MainActivity наследуется от AppCompatActivity — класса, который в свою очередь наследуется от FragmentActivity, и поэтому ее текущий объект мы можем передать в качестве параметра в конструктор MyAdapter (а через него — в конструктор FragmentStateAdapter). Чтобы перелистывание заработало, для ViewPager2 устанавливается адаптер MyAdapter.
И запустив проект, мы сможем с помощью перелистывания перемещаться по страницам: