يعد Word to PDF أحد عمليات تحويل المستندات التي تتم ممارستها على نطاق واسع وهذا هو السبب في أن MS Word يوفر ميزة مضمنة لحفظ مستندات Word بتنسيق PDF. نظرًا لأن PDF هو تنسيق مفضل لمشاركة المستندات أو الاحتفاظ بها عبر الإنترنت ، فإن الحاجة إلى تحويل Word إلى PDF تحدث في سيناريوهات مختلفة. من ناحية أخرى ، جعلت الهواتف الذكية التي تعمل بنظام Android حياة البشر أسهل من خلال وضع العديد من الوظائف داخل الهواتف عبر التطبيقات. بمراقبة هذه الاتجاهات ، في هذه المقالة ، سأوضح لك كيفية تحويل مستندات Word إلى PDF داخل تطبيق Android. للتوضيح ، سننشئ تطبيق Word to PDF Converter بسيطًا لنظام Android في بضع خطوات يحتوي على الميزات التالية.
- قم بتحويل مستند Word إلى PDF
- احفظ ملف PDF في مساحة تخزين الهاتف
- عرض ملف PDF داخل التطبيق
مكتبة محول Word إلى PDF لنظام Android
لتحويل مستندات MS Word إلى تنسيق PDF ، سنستخدم Aspose.Words for Android via Java الذي يتيح لك تحويل مستندات DOC / DOCX إلى ملفات PDF بسلاسة باستخدام سطرين من التعليمات البرمجية. يمكنك إما تنزيل API أو تثبيته باستخدام تكوين Maven.
خطوات تحويل Word إلى PDF في Android
فيما يلي خطوات إنشاء تطبيق Word to PDF Converter بسيط في Android باستخدام Aspose.Words for Android عبر Java:
- أنشئ مشروعًا جديدًا في Android Studio (أو Eclipse) وحدد نموذج “Empty Activity”.
- تكوين مشروعك.
- افتح ملف 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 عن طريق إضافة الإدخال التالي ضمن قسم التكوين الافتراضي في 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);
// أنواع mime لمستندات 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();
}
}
}
- قم ببناء التطبيق وتشغيله داخل هاتف Android الذكي أو جهاز افتراضي.
- اسمح لهذا التطبيق بالوصول إلى التخزين بالانتقال إلى الإعدادات-> التطبيقات-> الأذونات-> مدير الأذونات-> التخزين.
Word to PDF Convetrer - شفرة المصدر
قم بتنزيل الكود المصدري الكامل لتطبيق Word to PDF Converter من GitHub.
استنتاج
في هذه المقالة ، تعلمت كيفية تحويل Word إلى PDF داخل تطبيقات Android. يمكنك دمج وظائف مماثلة داخل التطبيق الخاص بك أو تحسين هذا المحول إلى المستوى الذي تريده. يمكنك معرفة المزيد حول Aspose.Words لنظام Android عبر Java من التوثيق.