Criando um PDF complexo usando Aspose.PDF
O exemplo Hello, World mostrou etapas simples para criar um documento PDF usando Java e Aspose.PDF. Neste artigo, vamos dar uma olhada em como criar um documento mais complexo com Java e Aspose.PDF para Java. Como exemplo, usaremos um documento de uma empresa fictícia que opera serviços de ferry para passageiros. Nosso documento conterá uma imagem, dois fragmentos de texto (cabeçalho e parágrafo), e uma tabela. Para construir tal documento, usaremos a abordagem baseada em DOM. Você pode ler mais na seção Noções básicas da API DOM.
Se criarmos um documento do zero, precisamos seguir certas etapas:
-
Instanciar um objeto Document. Neste passo, criaremos um documento PDF vazio com alguns metadados, mas sem páginas.
-
Adicionar uma Page ao objeto do documento. Agora, nosso documento terá uma página.
-
Para adicionar uma imagem, criamos um FileInputStream, indicando o caminho para o arquivo que precisamos. Em seguida, adicionamos a imagem ao retângulo com as coordenadas fornecidas.
-
Criar um TextFragment para o cabeçalho. Para o cabeçalho, usaremos a fonte Arial com tamanho de fonte 24pt e alinhamento centralizado.
-
Adicionar o cabeçalho aos Paragraphs da página.
-
Criar um TextFragment para a descrição. Para a descrição, usaremos a fonte Arial com tamanho de fonte 24pt e alinhamento centralizado.
-
Adicione (descrição) aos parágrafos da página. Usamos as fontes “Helvetica” e “Times Roman” em nosso exemplo, mas lembre-se de que há apenas três fontes de sistema no Android:
- normal (Droid Sans);
- serif (Droid Serif);
- monospace (Droid Sans Mono).
- Crie uma tabela, adicione propriedades à tabela.
- Adicione (tabela) à página Parágrafos.
- Salve um documento “Complex.pdf”.
No final, é exibido um pop-up com a mensagem “Documento PDF foi gerado!”.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:layout_marginLeft="32dp"
android:layout_marginRight="32dp"
android:text="@string/title"
android:textSize="24sp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="64dp"
android:layout_marginLeft="32dp"
android:layout_marginRight="32dp"
android:text="@string/generate_btn" />
</LinearLayout>