Перемещение страницы в java

Перемещение страниц в 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, чтобы попробовать код в своей среде.

  1. Создайте объектДокумент с входным PDF-файлом.
  2. Получить страницу из коллекции PageCollection.
  3. Сохраните выходной PDF-файл с помощью методаSave.
  4. Добавьте страницу в целевой документ. Сохраните выходной файл.
  5. Удалить страницу в исходном документе.
  6. Сохраните исходный 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, упоминаемых в вашем проекте.
Читайте также:  Escape backslash in python

Перемещение страницы из одного 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 в 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.

И запустив проект, мы сможем с помощью перелистывания перемещаться по страницам:

Источник

Оцените статью