Conversor de Word para PDF no Android

O Word para PDF é uma das conversões de documentos amplamente praticadas e esta é a razão pela qual o MS Word fornece um recurso interno para salvar documentos do Word como PDF. Como o PDF é o formato preferido para compartilhar os documentos ou mantê-los online, a necessidade de conversão de Word para PDF ocorre em vários cenários. Por outro lado, os smartphones com Android tornaram a vida dos humanos mais fácil, colocando uma infinidade de funcionalidades nos telefones por meio de aplicativos. De olho nessas tendências, neste artigo, mostrarei como converter documentos do Word para PDF em um aplicativo Android. Para demonstração, criaremos um aplicativo Word to PDF Converter simples para Android em algumas etapas com os seguintes recursos.

  • Converter um documento do Word para PDF
  • Salvar PDF no armazenamento do telefone
  • Visualize PDF dentro do aplicativo

Biblioteca de conversores de Word para PDF para Android

Para converter documentos do MS Word em formato PDF, usaremos o Aspose.Words for Android via Java que permite converter documentos DOC/DOCX em arquivos PDF perfeitamente usando algumas linhas de código. Você pode baixar a API ou instalá-la usando a configuração Maven.

Passos para converter Word para PDF no Android

A seguir estão as etapas para criar um aplicativo Word to PDF Converter simples no Android usando Aspose.Words para Android via Java:

  • Crie um novo projeto no Android Studio (ou Eclipse) e selecione o modelo “Empty Activity”.
criar novo projeto no android studio
  • Configure seu projeto.
Configurar projeto Android
  • Abra o arquivo build.gradle.
atualize build.gradle no android studio
  • Adicione a seguinte seção de repositórios em build.gradle.
repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
  • Adicione as seguintes entradas na seção de dependências do build.gradle.
implementation 'com.google.android.material:material:1.1.0'
implementation 'com.android.support:multidex:2.0.0'
implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
compile (group: 'com.aspose', name: 'aspose-words', version: '20.6', classifier: 'android.via.java')
  • Habilite o multidex adicionando a seguinte entrada na seção defaultConfig em build.gradle.
// enable multiDex
multiDexEnabled true
  • O arquivo build.gradle completo terá a seguinte aparência:
apply plugin: 'com.android.application'

android {
    compileSdkVersion 30
    buildToolsVersion "30.0.1"

    defaultConfig {
        applicationId "com.example.wordtopdf"
        minSdkVersion 16
        targetSdkVersion 30
        versionCode 1
        versionName "1.0"
        // ativar multiDex
        multiDexEnabled true
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
    implementation 'com.google.android.material:material:1.1.0'
    implementation 'com.android.support:multidex:2.0.0'
    implementation 'com.github.barteksc:android-pdf-viewer:2.8.2'
    compile (group: 'com.aspose', name: 'aspose-words', version: '20.6', classifier: 'android.via.java')
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
  • Abra o arquivo activitymain.xml.
atualizar layout xml
  • Cole o script a seguir para o layout da atividade principal.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
    tools:context=".MainActivity">

    <com.github.barteksc.pdfviewer.PDFView
        android:id="@+id/pdfView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:layout_editor_absoluteX="-26dp"
        tools:layout_editor_absoluteY="-16dp" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="#D3FFFFFF"
        android:textColor="#A3A2A2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        tools:ignore="MissingConstraints"
        tools:layout_editor_absoluteY="39dp" />

    <com.google.android.material.floatingactionbutton.FloatingActionButton
        android:id="@+id/fab"
        android:layout_width="wrap_content"
        android:layout_height="408dp"
        android:layout_gravity="bottom|right"
        android:layout_marginEnd="36dp"
        android:layout_marginRight="36dp"
        android:layout_marginBottom="140dp"
        app:backgroundTint="#00BCD4"
        app:layout_anchorGravity="bottom|right|end"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/pdfView"
        app:srcCompat="@android:drawable/stat_sys_upload"
        tools:ignore="MissingConstraints" />
</androidx.constraintlayout.widget.ConstraintLayout>
  • Abra o arquivo MainActivity.java.
adicionar o código do conversor de palavra para pdf
  • Cole o seguinte código Java em MainActivity.java.
package com.example.wordtopdf;

import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.TargetApi;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;

import com.aspose.words.Document;
import com.aspose.words.License;
import com.github.barteksc.pdfviewer.PDFView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;

import android.os.Environment;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

@TargetApi(Build.VERSION_CODES.FROYO)
public class MainActivity extends AppCompatActivity {

    private static final int PICK_PDF_FILE = 2;
    private final String storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + File.separator;
    private final String outputPDF = storageDir + "Converted_PDF.pdf";
    private TextView textView = null;
    private Uri document = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // aplique a licença se você tiver a licença Aspose.Words...
        applyLicense();
        // obtenha treeview e defina seu texto
        textView = (TextView) findViewById(R.id.textView);
        textView.setText("Select a Word DOCX file...");
        // definir o ouvinte de clique do botão flutuante
        FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.fab);
        myFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    // abra o arquivo do Word a partir do seletor de arquivos e converta para PDF
                    openaAndConvertFile(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private void openaAndConvertFile(Uri pickerInitialUri) {
        // criar uma nova intenção para abrir o documento
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        // tipos mime para documentos do MS Word
        String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
        // iniciar atividade
        startActivityForResult(intent, PICK_PDF_FILE);
    }

    @RequiresApi(api = Build.VERSION_CODES.KITKAT)
    @Override
    public void onActivityResult(int requestCode, int resultCode,
                                 Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);

        if (resultCode == Activity.RESULT_OK) {
            if (intent != null) {
                document = intent.getData();
                // abra o documento selecionado em um fluxo de entrada
                try (InputStream inputStream =
                             getContentResolver().openInputStream(document);) {
                    Document doc = new Document(inputStream);
                    // salve DOCX como PDF
                    doc.save(outputPDF);
                    // mostre a localização do arquivo PDF no toast, bem como na visualização em árvore (opcional)
                    Toast.makeText(MainActivity.this, "File saved in: " + outputPDF, Toast.LENGTH_LONG).show();
                    textView.setText("PDF saved at: " + outputPDF);
                    // ver PDF convertido
                    viewPDFFile();
                } catch (FileNotFoundException e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, "File not found: " + e.getMessage(), Toast.LENGTH_LONG).show();
                } catch (IOException e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                } catch (Exception e) {
                    e.printStackTrace();
                    Toast.makeText(MainActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
                }
            }
        }
    }

    public void viewPDFFile() {
        // carregar PDF no PDFView
        PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
        pdfView.fromFile(new File(outputPDF)).load();
    }
    public void applyLicense()
    {
        // definir licença
        License lic= new License();
        InputStream inputStream = getResources().openRawResource(R.raw.license);
        try {
            lic.setLicense(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • Crie o aplicativo e execute-o em seu smartphone Android ou em um dispositivo virtual.
  • Permita que este aplicativo acesse o armazenamento acessando Configurações->Aplicativos->Permissões->Gerenciador de permissões->Armazenamento.
Conversor Android Word para PDF

Conversor de Word para PDF - Código-fonte

Baixe o código-fonte completo do aplicativo Word to PDF Converter do GitHub.

Conclusão

Neste artigo, você aprendeu como converter Word para PDF em aplicativos Android. Você pode integrar funcionalidades semelhantes em seu próprio aplicativo ou aprimorar este conversor até o nível desejado. Você pode aprender mais sobre Aspose.Words para Android via Java na documentação.

Veja também