Convertitore da Word a PDF in Android

La conversione da Word a PDF è una delle conversioni di documenti ampiamente praticate e questo è il motivo per cui MS Word fornisce una funzionalità integrata per salvare i documenti Word come PDF. Poiché il PDF è un formato preferito per condividere i documenti o mantenerli online, la necessità della conversione da Word a PDF si verifica in vari scenari. D’altra parte, gli smartphone Android hanno semplificato la vita degli esseri umani inserendo una moltitudine di funzionalità all’interno dei telefoni tramite app. Tenendo d’occhio queste tendenze, in questo articolo ti mostrerò come convertire documenti Word in PDF all’interno di un’app Android. A scopo dimostrativo, creeremo una semplice app Convertitore da Word a PDF per Android in pochi passaggi con le seguenti funzionalità.

  • Converti un documento Word in PDF
  • Salva PDF nella memoria del telefono
  • Visualizza PDF all’interno dell’app

Libreria del convertitore da Word a PDF per Android

Per convertire documenti MS Word in formato PDF, utilizzeremo Aspose.Words per Android tramite Java che ti consente di convertire documenti DOC/DOCX in file PDF senza problemi utilizzando un paio di righe di codice. Puoi scaricare l’API o installarla utilizzando la configurazione Maven.

Passaggi per convertire Word in PDF in Android

Di seguito sono riportati i passaggi per creare una semplice app di conversione da Word a PDF in Android utilizzando Aspose.Words per Android tramite Java:

  • Crea un nuovo progetto in Android Studio (o Eclipse) e seleziona il modello “Attività vuota”.
crea un nuovo progetto in Android Studio
  • Configura il tuo progetto.
Configura progetto Android
  • Apri il file build.gradle.
aggiorna build.gradle in Android Studio
  • Aggiungi la seguente sezione dei repository in build.gradle.
repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
  • Aggiungi le seguenti voci nella sezione delle dipendenze di 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')
  • Abilita multidex aggiungendo la seguente voce nella sezione defaultConfig in build.gradle.
// enable multiDex
multiDexEnabled true
  • Il file build.gradle completo sarà simile al seguente:
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"
        // abilita 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'
}
  • Aprire il file activitymain.xml.
aggiornamento layout xml
  • Incolla il seguente script per il layout dell’attività 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>
  • Apri il file MainActivity.java.
aggiungi il codice del convertitore da word a pdf
  • Incolla il seguente codice Java in 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);
        // applica la licenza se hai la licenza Aspose.Words...
        applyLicense();
        // ottenere treeview e impostarne il testo
        textView = (TextView) findViewById(R.id.textView);
        textView.setText("Select a Word DOCX file...");
        // definire l'ascoltatore di clic del pulsante mobile
        FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.fab);
        myFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    // apri il file Word dal selettore file e converti in PDF
                    openaAndConvertFile(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private void openaAndConvertFile(Uri pickerInitialUri) {
        // creare un nuovo intento per aprire il documento
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        // tipi mime per documenti MS Word
        String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
        // iniziare l'attività
        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();
                // aprire il documento selezionato in un flusso di input
                try (InputStream inputStream =
                             getContentResolver().openInputStream(document);) {
                    Document doc = new Document(inputStream);
                    // salva DOCX come PDF
                    doc.save(outputPDF);
                    // mostra la posizione del file PDF in toast e treeview (opzionale)
                    Toast.makeText(MainActivity.this, "File saved in: " + outputPDF, Toast.LENGTH_LONG).show();
                    textView.setText("PDF saved at: " + outputPDF);
                    // visualizza PDF convertito
                    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() {
        // carica il PDF nel PDFView
        PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
        pdfView.fromFile(new File(outputPDF)).load();
    }
    public void applyLicense()
    {
        // impostare la licenza
        License lic= new License();
        InputStream inputStream = getResources().openRawResource(R.raw.license);
        try {
            lic.setLicense(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • Crea l’app ed eseguila sul tuo smartphone Android o su un dispositivo virtuale.
  • Consenti a questa app di accedere allo spazio di archiviazione andando su Impostazioni->App->Autorizzazioni->Gestione autorizzazioni->Archiviazione.
Convertitore Android da Word a PDF

Convertitore da Word a PDF - Codice sorgente

Scarica il codice sorgente completo dell’app Convertitore da Word a PDF da GitHub.

Conclusione

In questo articolo, hai imparato come convertire Word in PDF all’interno delle app Android. Puoi integrare funzionalità simili all’interno della tua app o migliorare questo convertitore fino al livello desiderato. Puoi saperne di più su Aspose.Words per Android tramite Java dalla documentazione.

Guarda anche