Наглядный пример простого преобразования файлов Word в формат PDF с помощью document4j, пожалуйста?

У меня есть простой файл Word, и я хочу преобразовать его в PDF с помощью documents4j API. Искали несколько часов, но так и не узнали, как писать код. Мне просто нужен базовый рабочий код.


person Pastasaurus Rex    schedule 20.10.2015    source источник
comment
Вы пытались решить эту проблему? Если да, отредактируйте свой вопрос, включив в него код и исследование, чтобы показать, что вам не помогло. Если вы этого не сделали, вы должны сначала попытаться решить эту проблему самостоятельно, а затем опубликовать код и исследование здесь. Это облегчит ответ на ваш вопрос другим!   -  person SuperBiasedMan    schedule 22.10.2015


Ответы (2)


Добавьте необходимые зависимости в pom.xml

i.e,

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-api</artifactId>
            <version>0.2.1</version>
        </dependency>       

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-util-conversion</artifactId>
            <version>0.2.1</version>
        </dependency>

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-transformer</artifactId>
            <version>0.2.1</version>
        </dependency>

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-util-all</artifactId>
            <version>0.2.1</version>
        </dependency>

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-local</artifactId>
            <version>0.2.1</version>
        </dependency>

        <dependency>
            <groupId>com.documents4j</groupId>
            <artifactId>documents4j-local-demo</artifactId>
            <version>0.2.1</version>
        </dependency>

И используйте следующий фрагмент кода, чтобы преобразовать документ в PDF. В приведенном ниже примере я конвертирую файл RTF в PDF.

        ByteArrayOutputStream bo = new ByteArrayOutputStream();

        InputStream in = new BufferedInputStream(new FileInputStream("C:\\PDF\\RichText1.rtf"));
        IConverter converter = LocalConverter.builder()
                                             .baseFolder(new File("C:\\PDF\\"))
                                             .workerPool(20, 25, 2, TimeUnit.SECONDS)
                                             .processTimeout(5, TimeUnit.SECONDS)
                                             .build();

        Future<Boolean> conversion = converter
                                        .convert(in).as(DocumentType.RTF)
                                        .to(bo).as(DocumentType.PDF)
                                        .prioritizeWith(1000) // optional
                                        .schedule();

Таким образом, ваш необходимый преобразованный файл будет сохранен в объекте ByteArrayOutputStream (bo) здесь.

person Nirav Patel    schedule 02.11.2015

Пример, представленный в этой статье, у меня не сработал. Этот сделал:

ПОМ-ФАЙЛ:

<dependencies>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-api</artifactId>
        <version>0.2.1</version>
    </dependency>       

    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-util-conversion</artifactId>
        <version>0.2.1</version>
    </dependency>

    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-transformer</artifactId>
        <version>0.2.1</version>
    </dependency>

    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-util-all</artifactId>
        <version>0.2.1</version>
    </dependency>

    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-local</artifactId>
        <version>0.2.1</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.8.0-beta2</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.8.0-beta2</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-util-standalone</artifactId>
        <version>1.0.3</version>
    </dependency>
    <dependency>
        <groupId>com.documents4j</groupId>
        <artifactId>documents4j-transformer-msoffice-word</artifactId>
        <version>1.0.3</version>
    </dependency>
    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>23.0</version>
    </dependency>
</dependencies>

И java-файл:

import com.documents4j.api.DocumentType;
import com.documents4j.api.IConverter;
import com.documents4j.job.LocalConverter;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

/**
 *
 * @author Neon/Jan Madle
 */
public class NewMain {

    /**
     * @param args the command line arguments
     * @throws java.io.FileNotFoundException
     */
    public static void main(String[] args) throws FileNotFoundException, IOException, InterruptedException, ExecutionException {
    ByteArrayOutputStream bo = new ByteArrayOutputStream();

    InputStream in = new BufferedInputStream(new FileInputStream(System.getProperty("user.dir") + File.separator +"out.rtf"));
    IConverter converter = LocalConverter.builder()
            .baseFolder(new File(System.getProperty("user.dir") + File.separator +"test"))
            .workerPool(20, 25, 2, TimeUnit.SECONDS)
            .processTimeout(5, TimeUnit.SECONDS)
            .build();

    Future<Boolean> conversion = converter
            .convert(in).as(DocumentType.RTF)
            .to(bo).as(DocumentType.PDF)
            .prioritizeWith(1000) // optional
            .schedule();
    conversion.get();
    try (OutputStream outputStream = new FileOutputStream("out.pdf")) {
        bo.writeTo(outputStream);
    }
    in.close();
    bo.close();
}
}
person Neon    schedule 27.05.2018