Файл удален после конвертации с использованием documents4j - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь использовать documents4j для преобразования типов файлов.Я пытался конвертировать несколько типов файлов из одного в другой.Код успешно выполнен, и я могу периодически видеть, как файлы конвертируются и производятся.Но в конце выполнения преобразованные файлы, я думаю, удаляются автоматически.Я не вижу преобразованные файлы в созданной временной папке.

Я распечатал объект преобразования Future и вот результат: LocalConversion {pending = false, отменено = false, сделано = true, priority = Priority {value= 1000, creationTime = 1527163966676}, цель-файловая система = C: \ Users \ USERNAME \ Desktop \ Новая папка \ 63cabe72-b2cf-4d52-b428-530dfc0fd63d \ temp2}.

Является ли целевой файл перемещеннымв другое место после преобразования?Или я пропустил несколько строк кода, который копирует целевой файл в другое место?

Я использую 1.0.3 версии documents4j libs.

Код:

import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;

public class Test {

    public static void main (String[] args) {
        try {
            ByteArrayOutputStream bo = new ByteArrayOutputStream();
            InputStream in = new BufferedInputStream(new FileInputStream("SOME_.TXT_FILE"));
            IConverter converter = LocalConverter.builder()
                                                .baseFolder(new File("SOME_FOLDER_PATH"))
                                                 .workerPool(20, 25, 2, TimeUnit.SECONDS)
                                                 .processTimeout(5, TimeUnit.SECONDS)
                                                 .build();
            Future<Boolean> conversion = converter
                                            .convert(in).as(DocumentType.TEXT)
                                            .to(bo).as(DocumentType.DOCX)
                                            .prioritizeWith(1000)
                                            .schedule();
            conversion.get();
            System.out.println(conversion);
            if(conversion.isDone()) {
                System.out.println("Done");
            } else if(conversion.isCancelled()){
                System.out.println("Cancelled");
            }
        }catch(Exception e) {
            System.out.println(e);
        }
    }
}

Я использую Maven для управления зависимостями.Мой pom.xml

    <properties>
        <documents4j.version>1.0.3</documents4j.version>
    </properties>
    <dependencies>
        <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-api</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-util-conversion</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-transformer</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-util-all</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-local</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-transformer-msoffice-word</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-transformer-msoffice-base</artifactId>
        <version>${documents4j.version}</version>
    </dependency>
</dependencies>

1 Ответ

0 голосов
/ 24 мая 2018

Я понял это после некоторой отладки.Таким образом, целевой файл сохраняется обратно в объекте ByteArrayOutputStream bo.Просто нужно сохранить это как файл.

 FileOutputStream fos = new FileOutputStream("C:\\Users\\USERNAME\\Desktop\\New folder\\OTGv4.docx");
        bo.writeTo(fos);

Надеюсь, это поможет!

...