Word to PDF Converter na Androida

Word to PDF to jedna z powszechnie praktykowanych konwersji dokumentów i to jest powód, dla którego MS Word zapewnia wbudowaną funkcję zapisywania dokumentów Word jako PDF. Ponieważ format PDF jest preferowanym formatem do udostępniania dokumentów lub przechowywania ich online, potrzeba konwersji plików Word na PDF występuje w różnych sytuacjach. Z drugiej strony smartfony z systemem Android ułatwiły życie ludziom, udostępniając w telefonach wiele funkcji za pośrednictwem aplikacji. Obserwując te trendy, w tym artykule pokażę, jak konwertować dokumenty programu Word do formatu PDF w aplikacji na Androida. Na potrzeby demonstracji zbudujemy w kilku krokach prostą aplikację Word to PDF Converter dla systemu Android, posiadającą następujące funkcje.

  • Konwertuj dokument programu Word na format PDF
  • Zapisz plik PDF w pamięci telefonu
  • Zobacz PDF w aplikacji

Biblioteka konwerterów plików Word na PDF dla systemu Android

Do konwersji dokumentów MS Word do formatu PDF użyjemy Aspose.Words dla Androida przez Javę, który pozwala bezproblemowo konwertować dokumenty DOC/DOCX na pliki PDF przy użyciu kilku linii kodu. Możesz pobrać interfejs API lub zainstalować go przy użyciu konfiguracji Maven.

Kroki, aby przekonwertować Word na PDF w Androidzie

Poniżej przedstawiono kroki, aby utworzyć prostą aplikację Word to PDF Converter na Androida przy użyciu Aspose.Words dla Androida przez Javę:

  • Utwórz nowy projekt w Android Studio (lub Eclipse) i wybierz szablon „Puste działanie”.
utwórz nowy projekt w studiu Android
  • Skonfiguruj swój projekt.
Skonfiguruj projekt Androida
  • Otwórz plik build.gradle.
zaktualizuj build.gradle w studiu Android
  • Dodaj następującą sekcję repozytoriów w pliku build.gradle.
repositories {
    mavenCentral()
    maven { url "https://repository.aspose.com/repo/" }
}
  • Dodaj następujące wpisy w sekcji zależności pliku 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')
  • Włącz multidex, dodając następujący wpis w sekcji defaultConfig w pliku build.gradle.
// enable multiDex
multiDexEnabled true
  • Kompletny plik build.gradle będzie wyglądał następująco:
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"
        // włącz 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'
}
  • Otwórz plik activitymain.xml.
zaktualizuj układ xml
  • Wklej następujący skrypt dla układu głównego działania.
<?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>
  • Otwórz plik MainActivity.java.
dodaj kod konwertera word do pdf
  • Wklej następujący kod Java w pliku 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);
        // zastosuj licencję, jeśli masz licencję Aspose.Words...
        applyLicense();
        // pobierz widok drzewa i ustaw jego tekst
        textView = (TextView) findViewById(R.id.textView);
        textView.setText("Select a Word DOCX file...");
        // zdefiniuj detektor kliknięć pływającego przycisku
        FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.fab);
        myFab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                try {
                    // otwórz plik Word z selektora plików i przekonwertuj do formatu PDF
                    openaAndConvertFile(null);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private void openaAndConvertFile(Uri pickerInitialUri) {
        // utwórz nowy zamiar otwarcia dokumentu
        Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
        intent.addCategory(Intent.CATEGORY_OPENABLE);
        // typy MIME dla dokumentów MS Word
        String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
        intent.setType("*/*");
        intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
        // rozpocząć aktywność
        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();
                // otwórz wybrany dokument w strumieniu wejściowym
                try (InputStream inputStream =
                             getContentResolver().openInputStream(document);) {
                    Document doc = new Document(inputStream);
                    // zapisz DOCX jako PDF
                    doc.save(outputPDF);
                    // pokaż lokalizację pliku PDF w toście, a także w widoku drzewa (opcjonalnie)
                    Toast.makeText(MainActivity.this, "File saved in: " + outputPDF, Toast.LENGTH_LONG).show();
                    textView.setText("PDF saved at: " + outputPDF);
                    // zobacz przekonwertowany plik PDF
                    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() {
        // załaduj PDF do PDFView
        PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
        pdfView.fromFile(new File(outputPDF)).load();
    }
    public void applyLicense()
    {
        // ustawić licencję
        License lic= new License();
        InputStream inputStream = getResources().openRawResource(R.raw.license);
        try {
            lic.setLicense(inputStream);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
  • Zbuduj aplikację i uruchom ją na swoim smartfonie z Androidem lub urządzeniu wirtualnym.
  • Zezwól tej aplikacji na dostęp do pamięci, przechodząc do Ustawienia->Aplikacje->Uprawnienia->Menedżer uprawnień->Pamięć masowa.
Konwerter plików PDF na Androida

Word to PDF Convetrer — kod źródłowy

Pobierz pełny kod źródłowy aplikacji Word to PDF Converter z GitHub.

Wniosek

W tym artykule nauczyłeś się, jak przekonwertować Word na PDF w aplikacjach na Androida. Możesz zintegrować podobną funkcjonalność z własną aplikacją lub ulepszyć ten konwerter do pożądanego poziomu. Możesz dowiedzieć się więcej o Aspose.Words dla Androida przez Javę z dokumentacji.

Zobacz też