Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ConvertToOffice Kotlin sample #6

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/test-kotlin-samples.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
strategy:
matrix:
os: [windows-latest, ubuntu-latest]
dir: ['TextExtract', 'FlattenTransparency', 'SplitPDF']
dir: ['TextExtract', 'FlattenTransparency', 'SplitPDF', 'ConvertToOffice']
steps:
- name: Checkout
uses: actions/checkout@v4
Expand Down Expand Up @@ -59,3 +59,6 @@ jobs:
path: |
${{matrix.dir}}/*.txt
${{matrix.dir}}/*.pdf
${{matrix.dir}}/*.docx
${{matrix.dir}}/*.xlsx
${{matrix.dir}}/*.pptx
14 changes: 14 additions & 0 deletions ConvertToOffice/.idea/runConfigurations/ConvertToOffice.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

231 changes: 231 additions & 0 deletions ConvertToOffice/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,231 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.datalogics.pdfl.samples</groupId>
<artifactId>ConvertToOffice</artifactId>
<version>1.0-SNAPSHOT</version>

<repositories>
<repository>
<id>mavenCentral</id>
<url>https://repo1.maven.org/maven2/</url>
</repository>
</repositories>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<kotlin.code.style>official</kotlin.code.style>
<kotlin.compiler.jvmTarget>1.8</kotlin.compiler.jvmTarget>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>

<profiles>
<profile>
<id>Windows64</id>
<activation>
<os>
<family>windows</family>
<arch>amd64</arch>
</os>
</activation>
<properties>
<jni.classifier>win-x86-64-jni</jni.classifier>
</properties>
</profile>
<profile>
<id>MacArm</id>
<activation>
<os>
<family>mac</family>
<arch>aarch64</arch>
</os>
</activation>
<properties>
<jni.classifier>mac-arm-64-jni</jni.classifier>
</properties>
</profile>
<profile>
<id>Linux64</id>
<activation>
<os>
<!-- Use OS <name> instead of <family> because the "unix" <family> also includes Mac -->
<name>Linux</name>
<arch>amd64</arch>
</os>
</activation>
<properties>
<jni.classifier>linux-x86-64-jni</jni.classifier>
</properties>
</profile>
</profiles>

<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
<version>1.9.21</version>
</dependency>
<dependency>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<version>18.31.0</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<version>18.31.0</version>
</dependency>
<dependency>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<version>18.31.0</version>
<type>zip</type>
<classifier>${jni.classifier}</classifier>
</dependency>
<dependency>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<version>18.31.0</version>
<type>zip</type>
<classifier>resources</classifier>
</dependency>
<dependency>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<version>18.31.0</version>
<classifier>javadoc</classifier>
</dependency>
</dependencies>

<build>
<sourceDirectory>src/main/kotlin</sourceDirectory>
<plugins>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<version>1.9.21</version>
<executions>
<execution>
<id>compile</id>
<phase>compile</phase>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
<version>2.22.2</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<configuration>
<mainClass>ConvertToOffice</mainClass>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>unpack-resources</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<classifier>resources</classifier>
<type>zip</type>
<outputDirectory>${project.build.directory}/lib/Resources</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>unpack-jni</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<classifier>${jni.classifier}</classifier>
<type>zip</type>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
<execution>
<id>unpack-license</id>
<phase>generate-resources</phase>
<goals>
<goal>unpack</goal>
</goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>com.datalogics.pdfl</groupId>
<artifactId>pdfl</artifactId>
<classifier>license</classifier>
<type>zip</type>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.datalogics.pdfl.samples.ConvertToOfficeKt</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.0.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>

</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package com.datalogics.pdfl.samples

import com.datalogics.PDFL.Document
import com.datalogics.PDFL.Library

/*
*
* This program converts sample PDF documents to Word, Excel, and PowerPoint files.
*
* Please note that the Office conversion APIs convertToWord, convertToExcel, and convertToPowerPoint are available on
* Windows 32/64-bit and Linux 64-bit only.
*
* Copyright (c) 2024, Datalogics, Inc. All rights reserved.
*
*/
class ConvertToOffice {
enum class OfficeType {
WORD,
EXCEL,
POWERPOINT
}

companion object {
fun convertPDFToOffice(inputPath: String, outputPath: String, officeType: OfficeType) {
println("Converting $inputPath, output file is $outputPath")

val result: Boolean = when (officeType) {
OfficeType.WORD -> Document.convertToWord(inputPath, outputPath)
OfficeType.EXCEL -> Document.convertToExcel(inputPath, outputPath)
OfficeType.POWERPOINT -> Document.convertToPowerPoint(inputPath, outputPath)
}

if (result) {
println("Successfully converted $inputPath to $outputPath")
} else {
println("ERROR: Could not convert $inputPath")
}
}
}
}

fun main(args: Array<String>) {
println("ConvertToOffice Sample:")

val lib = Library()
try {
println("Initialized the library.")

val inputPathWord = Library.getResourceDirectory() + "Sample_Input/Word.pdf"
val outputPathWord = "word-out.docx"
val inputPathExcel = Library.getResourceDirectory() + "Sample_Input/Excel.pdf"
val outputPathExcel = "excel-out.xlsx"
val inputPathPowerPoint = Library.getResourceDirectory() + "Sample_Input/PowerPoint.pdf"
val outputPathPowerPoint = "powerpoint-out.pptx"

ConvertToOffice.convertPDFToOffice(inputPathWord, outputPathWord, ConvertToOffice.OfficeType.WORD)
ConvertToOffice.convertPDFToOffice(inputPathExcel, outputPathExcel, ConvertToOffice.OfficeType.EXCEL)
ConvertToOffice.convertPDFToOffice(
inputPathPowerPoint,
outputPathPowerPoint,
ConvertToOffice.OfficeType.POWERPOINT
)
} finally {
lib.delete()
}
}