Convertisseur Word en PDF sur Android

Word en PDF est l’une des conversions de documents les plus répandues et c’est la raison pour laquelle MS Word fournit une fonctionnalité intégrée pour enregistrer les documents Word au format PDF. Étant donné que le format PDF est un format préféré pour partager les documents ou les conserver en ligne, la nécessité de convertir Word en PDF se produit dans divers scénarios. D’autre part, les smartphones sous Android ont simplifié la vie des humains en intégrant une multitude de fonctionnalités dans les téléphones via des applications. En gardant un œil sur ces tendances, dans cet article, je vais vous montrer comment convertir des documents Word en PDF dans une application Android. Pour la démonstration, nous allons créer une simple application Word to PDF Converter pour Android en quelques étapes avec les fonctionnalités suivantes.

  • Convertir un document Word en PDF
  • Enregistrer le PDF dans la mémoire du téléphone
  • Afficher le PDF dans l’application

Bibliothèque de conversion Word en PDF pour Android

Pour convertir des documents MS Word au format PDF, nous utiliserons Aspose.Words pour Android via Java qui vous permet de convertir des documents DOC/DOCX en fichiers PDF de manière transparente en utilisant quelques lignes de code. Vous pouvez soit télécharger l’API, soit l’installer à l’aide de la configuration Maven.

Étapes pour convertir Word en PDF sur Android

Voici les étapes pour créer une simple application Word to PDF Converter dans Android en utilisant Aspose.Words pour Android via Java :

  • Créez un nouveau projet dans Android Studio (ou Eclipse) et sélectionnez le modèle “Activité vide”.
créer un nouveau projet dans Android Studio
  • Configurez votre projet.
Configurer le projet Android
  • Ouvrez le fichier build.gradle.
mettre à jour build.gradle dans le studio Android
  • Ajoutez la section de référentiels suivante dans build.gradle.
repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
  • Ajoutez les entrées suivantes dans la section des dépendances de 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')
  • Activez le multidex en ajoutant l’entrée suivante sous la section defaultConfig dans build.gradle.
// enable multiDex
multiDexEnabled true
  • Le fichier build.gradle complet ressemblera à ceci :
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"
        // activer 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'
}
  • Ouvrez le fichier activitymain.xml.
mettre à jour la mise en page xml
  • Collez le script suivant pour la mise en page de l’activité principale.
<?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>
  • Ouvrez le fichier MainActivity.java.
ajouter un mot au code du convertisseur pdf
  • Collez le code Java suivant dans 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);
        // appliquez la licence si vous avez la licence Aspose.Words...
        applyLicense();
        // obtenir treeview et définir son texte
        textView = (TextView) findViewById(R.id.textView);
        textView.setText("Select a Word DOCX file...");
        // définir l'écouteur de clic du bouton flottant
        FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.fab);
        myFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    // ouvrir le fichier Word à partir du sélecteur de fichiers et le convertir en PDF
                    openaAndConvertFile(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private void openaAndConvertFile(Uri pickerInitialUri) {
        // créer une nouvelle intention d'ouvrir le document
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        // types mime pour les documents MS Word
        String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
        // commencer l'activité
        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();
                // ouvrir le document sélectionné dans un flux d'entrée
                try (InputStream inputStream =
                             getContentResolver().openInputStream(document);) {
                    Document doc = new Document(inputStream);
                    // enregistrer DOCX au format PDF
                    doc.save(outputPDF);
                    // afficher l'emplacement du fichier PDF dans toast ainsi que l'arborescence (facultatif)
                    Toast.makeText(MainActivity.this, "File saved in: " + outputPDF, Toast.LENGTH_LONG).show();
                    textView.setText("PDF saved at: " + outputPDF);
                    // afficher le PDF converti
                    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() {
        // charger le PDF dans le PDFView
        PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
        pdfView.fromFile(new File(outputPDF)).load();
    }
    public void applyLicense()
    {
        // définir la licence
        License lic= new License();
        InputStream inputStream = getResources().openRawResource(R.raw.license);
        try {
            lic.setLicense(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • Créez l’application et exécutez-la sur votre smartphone Android ou sur un appareil virtuel.
  • Autorisez cette application à accéder au stockage en accédant à Paramètres-> Applications-> Autorisations-> Gestionnaire d’autorisations-> Stockage.
Convertisseur Android Word en PDF

Convertisseur Word en PDF - Code source

Téléchargez le code source complet de l’application Word to PDF Converter à partir de GitHub.

Conclusion

Dans cet article, vous avez appris à convertir Word en PDF dans les applications Android. Vous pouvez intégrer des fonctionnalités similaires dans votre propre application ou améliorer ce convertisseur jusqu’au niveau souhaité. Vous pouvez en savoir plus sur Aspose.Words pour Android via Java à partir de la documentation.

Voir également