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”.
- Configurez votre projet.
- Ouvrez le fichier build.gradle.
- 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.
- 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.
- 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 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.