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”.
- Skonfiguruj swój projekt.
- Otwórz plik build.gradle.
- 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.
- 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.
- 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.
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.