ה-Word ל-PDF היא אחת מהמרות המסמכים הנפוצות, וזו הסיבה ש-MS Word מספק תכונה מובנית לשמירת מסמכי Word כ-PDF. מכיוון ש-PDF הוא פורמט מועדף לשיתוף המסמכים או לשמירתם באינטרנט, הצורך בהמרת Word ל-PDF מתרחש בתרחישים שונים. מצד שני, סמארטפונים המונעים על ידי אנדרואיד הפכו את חיי בני האדם לקלים יותר על ידי הכנסת שפע של פונקציונליות לטלפונים באמצעות אפליקציות. במעקב אחר מגמות אלה, במאמר זה, אני אראה לך כיצד להמיר מסמכי Word ל-PDF בתוך אפליקציית אנדרואיד. לצורך הדגמה, נבנה אפליקציית Word to PDF Converter פשוטה עבור אנדרואיד תוך מספר שלבים עם התכונות הבאות.
- המרת מסמך Word ל-PDF
- שמור PDF באחסון הטלפון
- הצג PDF בתוך האפליקציה
ספריית ממיר וורד ל-PDF עבור אנדרואיד
להמרת מסמכי MS Word לפורמט PDF, נשתמש ב-Aspose.Words עבור אנדרואיד דרך Java המאפשרת להמיר מסמכי DOC/DOCX לקובצי PDF בצורה חלקה באמצעות כמה שורות קוד. אתה יכול להוריד את ה-API או להתקין אותו באמצעות תצורת Maven.
שלבים להמרת Word ל-PDF באנדרואיד
להלן השלבים ליצירת אפליקציית Word to PDF Converter פשוטה באנדרואיד באמצעות Aspose.Words עבור Android באמצעות Java:
- צור פרויקט חדש ב-Android Studio (או Eclipse) ובחר בתבנית “פעילות ריקה”.
- הגדר את הפרויקט שלך.
- פתח את הקובץ build.gradle.
- הוסף את קטע המאגרים הבא ב-build.gradle.
repositories {
mavenCentral()
maven { url "https://repository.aspose.com/repo/" }
}
- הוסף את הערכים הבאים בקטע התלות של 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')
- אפשר multidex על ידי הוספת הערך הבא תחת סעיף defaultConfig ב-build.gradle.
// enable multiDex
multiDexEnabled true
- קובץ build.gradle המלא ייראה כך:
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"
// אפשר 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'
}
- פתח את קובץ activitymain.xml.
- הדבק את הסקריפט הבא לפריסה של הפעילות הראשית.
<?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>
- פתח את הקובץ MainActivity.java.
- הדבק את קוד ה-Java הבא ב-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);
// החל את הרישיון אם יש לך את רישיון Aspose.Words...
applyLicense();
// קבל תצוגת עץ והגדר את הטקסט שלו
textView = (TextView) findViewById(R.id.textView);
textView.setText("Select a Word DOCX file...");
// הגדר קליק מאזין של כפתור צף
FloatingActionButton myFab = (FloatingActionButton) findViewById(R.id.fab);
myFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
// פתח קובץ Word מבורר הקבצים והמר ל-PDF
openaAndConvertFile(null);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private void openaAndConvertFile(Uri pickerInitialUri) {
// ליצור כוונה חדשה לפתוח מסמך
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
// סוגי פנטומימה עבור מסמכי MS Word
String[] mimetypes = {"application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/msword"};
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimetypes);
// להתחיל פעילות
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();
// פתח את המסמך שנבחר לתוך זרם קלט
try (InputStream inputStream =
getContentResolver().openInputStream(document);) {
Document doc = new Document(inputStream);
// שמור DOCX כ-PDF
doc.save(outputPDF);
// הצג מיקום קובץ PDF בטוסט כמו גם תצוגת עץ (אופציונלי)
Toast.makeText(MainActivity.this, "File saved in: " + outputPDF, Toast.LENGTH_LONG).show();
textView.setText("PDF saved at: " + outputPDF);
// הצג 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() {
// טען PDF ל-PDFView
PDFView pdfView = (PDFView) findViewById(R.id.pdfView);
pdfView.fromFile(new File(outputPDF)).load();
}
public void applyLicense()
{
// להגדיר רישיון
License lic= new License();
InputStream inputStream = getResources().openRawResource(R.raw.license);
try {
lic.setLicense(inputStream);
} catch (Exception e) {
e.printStackTrace();
}
}
}
- בנה את האפליקציה והפעל אותה בסמארטפון אנדרואיד או במכשיר וירטואלי.
- אפשר לאפליקציה זו לגשת לאחסון על ידי מעבר אל הגדרות->אפליקציות->הרשאות->מנהל הרשאות->אחסון.
Word to PDF Convetrer - קוד מקור
הורד את קוד המקור המלא של אפליקציית Word to PDF Converter מ-GitHub.
סיכום
במאמר זה, למדת כיצד להמיר Word ל-PDF בתוך אפליקציות אנדרואיד. אתה יכול לשלב פונקציונליות דומה בתוך האפליקציה שלך או לשפר את הממיר הזה עד לרמה הרצויה. אתה עשוי ללמוד עוד על Aspose.Words עבור אנדרואיד דרך Java מתוך תיעוד.