Android의 Word에서 PDF로 변환기

Word to PDF는 널리 사용되는 문서 변환 중 하나이며 MS Word가 Word 문서를 PDF로 저장하는 내장 기능을 제공하는 이유입니다. PDF는 문서를 공유하거나 온라인으로 유지하는 데 선호되는 형식이므로 Word에서 PDF로의 변환은 다양한 시나리오에서 필요합니다. 반면, 안드로이드 기반 스마트폰은 앱을 통해 휴대폰에 다양한 기능을 넣어 인간의 삶을 더 쉽게 만들었습니다. 이러한 추세를 주시하면서 이 기사에서는 Android 앱 내에서 Word 문서를 PDF로 변환하는 방법을 보여 드리겠습니다. 데모를 위해 다음 기능을 갖춘 간단한 Android용 Word to PDF 변환기 앱을 몇 단계 만에 빌드합니다.

  • Word 문서를 PDF로 변환
  • 휴대폰의 저장 공간에 PDF 저장
  • 앱 내에서 PDF 보기

Android용 Word to PDF 변환기 라이브러리

MS Word 문서를 PDF 형식으로 변환하기 위해 몇 줄의 코드를 사용하여 DOC/DOCX 문서를 PDF 파일로 원활하게 변환할 수 있는 Java를 통한 Android용 Aspose.Words를 사용합니다. API를 다운로드하거나 Maven 구성을 사용하여 설치할 수 있습니다.

Android에서 Word를 PDF로 변환하는 단계

다음은 Java를 통해 Android용 Aspose.Words를 사용하여 Android에서 간단한 Word to PDF 변환기 앱을 만드는 단계입니다.

  • Android Studio(또는 Eclipse)에서 새 프로젝트를 만들고 “Empty Activity” 템플릿을 선택합니다.
안드로이드 스튜디오에서 새 프로젝트 생성
  • 프로젝트를 구성합니다.
Android 프로젝트 구성
  • build.gradle 파일을 엽니다.
Android 스튜디오에서 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')
  • build.gradle의 defaultConfig 섹션 아래에 다음 항목을 추가하여 multidex를 활성화합니다.
// 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"
        // 멀티덱스 활성화
        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 업데이트
  • 기본 활동의 레이아웃을 위해 다음 스크립트를 붙여넣습니다.
<?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 파일을 엽니다.
pdf 변환기 코드에 단어 추가
  • MainActivity.java에 다음 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();
        // treeview를 가져 와서 텍스트를 설정하십시오.
        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 문서의 MIME 유형
        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 스마트폰 또는 가상 장치 내에서 실행합니다.
  • 설정 -> 앱 -> 권한 -> 권한 관리자 -> 저장소로 이동하여 이 앱이 저장소에 액세스하도록 허용합니다.
안드로이드 워드를 PDF로 변환하는 변환기

Word to PDF 변환기 - 소스 코드

GitHub에서 Word to PDF Converter 앱의 전체 소스 코드를 다운로드합니다.

결론

이 기사에서는 Android 앱 내에서 Word를 PDF로 변환하는 방법을 배웠습니다. 유사한 기능을 자신의 앱에 통합하거나 이 변환기를 원하는 수준까지 향상시킬 수 있습니다. 문서에서 Java를 통해 Android용 Aspose.Words에 대해 자세히 알아볼 수 있습니다.

또한보십시오