Как я могу добавить элементы pTab в docx4j при конвертации документа в pdf - PullRequest
0 голосов
/ 23 марта 2020

Я получаю ошибку при преобразовании документа в pdf с использованием библиотеки docx4j в Java. К сожалению, моя ошибка заключается в следующем

НЕ РЕАЛИЗОВАНО поддержка w: pict без v: imagedata

, и она отображается в преобразованном файле PDF вместо отображения ошибки в моем терминале java ,

Я просмотрел некоторые статьи и вопросы, поэтому нашел это , конвертирующее docx в pdf . Тем не менее, я не уверен, как использовать это в моем коде или преобразовать его. Это мой код:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings;
import org.docx4j.fonts.PhysicalFont;
import org.docx4j.fonts.PhysicalFonts;
import org.docx4j.model.structure.SectionWrapper;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;

public class docTopdf {
    public static void main(String[] args) {
        try {
            InputStream is = new FileInputStream(
                    new File(
                            "test.docx"));
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage
                    .load(is);

            List<SectionWrapper> sections = wordMLPackage.getDocumentModel().getSections();
            for (int i = 0; i < sections.size(); i++) {

                wordMLPackage.getDocumentModel().getSections().get(i)
                        .getPageDimensions();
            }
            PhysicalFonts.discoverPhysicalFonts();
            @Deprecated
            Map<String, PhysicalFont> physicalFonts = PhysicalFonts.getPhysicalFonts();

            // 2) Prepare Pdf settings
            @Deprecated
                    PdfSettings pdfSettings = new PdfSettings();

            // 3) Convert WordprocessingMLPackage to Pdf
            @Deprecated
            org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(
                    wordMLPackage);
            @Deprecated
            OutputStream out = new FileOutputStream(
                    new File(
                            "test.pdf"));
            conversion.output(out, pdfSettings);
        } catch (Throwable e) {

            e.printStackTrace();
        }
    }
}

И мой пом. xml

   <dependency>
            <groupId>org.docx4j</groupId>
            <artifactId>docx4j</artifactId>
            <version>3.2.1</version>
        </dependency>

любая помощь будет принята, поскольку я новичок в этом преобразовании. Заранее спасибо

1 Ответ

0 голосов
/ 26 марта 2020

Создание PDF с помощью XSL FO не поддерживает w: pict без v: imagedata (ie графика c, который не является простым изображением).

Хотя вы можете подавить сообщение при правильной настройке ведения журнала ваш PDF-файл будет с потерями.

Вы можете исправить входной документ (ie использовать изображение вместо того, что у вас есть в данный момент) или использовать конвертер PDF с соответствующей поддержкой. , Для одного варианта см. https://www.docx4java.org/blog/2020/03/documents4j-for-pdf-output/

...