在java中将docx文件转换为pdf..问题

在java中将docx文件转换为pdf..问题,java,Java,我正在开发一个项目,需要一个docx文件转换为pdf。我发现同样的问题已经发布,并使用了“Kishan C S”提供的代码。它使用docx4J2.8.1 代码运行良好,生成了pdf,但我面临的唯一问题是docx文件包含logo.jpg(图像标题部分),未进行转换。只有文本格式转换为pdf。 我张贴的代码,我已经使用。请告诉我如何解决这个问题 附言:我提到的链接 导入java.io.File; 导入java.io.FileInputStream; 导入java.io.FileNotFoundExc

我正在开发一个项目,需要一个docx文件转换为pdf。我发现同样的问题已经发布,并使用了“Kishan C S”提供的代码。它使用docx4J2.8.1 代码运行良好,生成了pdf,但我面临的唯一问题是docx文件包含logo.jpg(图像标题部分),未进行转换。只有文本格式转换为pdf。 我张贴的代码,我已经使用。请告诉我如何解决这个问题

附言:我提到的链接

导入java.io.File;
导入java.io.FileInputStream;
导入java.io.FileNotFoundException;
导入java.io.FileOutputStream;
导入java.io.InputStream;
导入java.io.OutputStream;
导入java.util.Collections;
导入java.util.List;
导入org.apache.log4j.Level;
导入org.apache.log4j.LogManager;
导入org.apache.log4j.Logger;
导入org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings;
导入org.docx4j.fonts.IdentityPlusMapper;
导入org.docx4j.fonts.Mapper;
导入org.docx4j.fonts.PhysicalFont;
导入org.docx4j.fonts.PhysicalFonts;
导入org.docx4j.openpackaging.exceptions.docx4jeexception;
导入org.docx4j.openpackaging.packages.WordprocessingMLPackage;
公共类DocxConverter{
publicstaticvoidmain(字符串[]args)抛出FileNotFoundException、docx4jeexception、Exception{
InputStream is=新文件InputStream(新文件(“D:\\Test\\C\u IN0004\u AppointmentLetter.docx”);
WordprocessingMLPackage wordMLPackage=WordprocessingMLPackage.load(is);
List sections=wordMLPackage.getDocumentModel().getSections();
对于(int i=0;i
我强烈建议您改用documents4j。它适用于图像、表格。。。。您好,Aditya,我一直在使用这段代码。这段代码可以很好地处理各种图像,如jpeg、gif等。您使用的是哪种docx文件,ie是由ms生成的还是自定义的?请阅读这段代码,因为您可以从自己的角度更好地了解docx文件并解决您的问题Hello Kishan,谢谢您的快速回复,我实际上是在寻找pvt。消息你,但没有找到选择,所以再次张贴问题。。我确实提到了代码工作正常,但在我的例子中,图像不会被转换。我试着制作一个新文件(在MS Word 2007中),其中只包含很少的文本和图像。但它生成的输出相同…知道我可能会遗漏什么吗?我强烈建议您改用documents4j。它适用于图像、表格。。。。您好,Aditya,我一直在使用这段代码。这段代码可以很好地处理各种图像,如jpeg、gif等。您使用的是哪种docx文件,ie是由ms生成的还是自定义的?请阅读这段代码,因为您可以从自己的角度更好地了解docx文件并解决您的问题Hello Kishan,谢谢您的快速回复,我实际上是在寻找pvt。消息你,但没有找到选择,所以再次张贴问题。。我确实提到了代码工作正常,但在我的例子中,图像不会被转换。我试着制作一个新的文件(在MSWord 2007中),其中只包含很少的文本和图像。但它生成相同的输出…知道我可能缺少什么吗
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collections;
import java.util.List;
import org.apache.log4j.Level; 
import org.apache.log4j.LogManager; 
import org.apache.log4j.Logger; 
import org.docx4j.convert.out.pdf.viaXSLFO.PdfSettings; 
import org.docx4j.fonts.IdentityPlusMapper; 
import org.docx4j.fonts.Mapper; 
import org.docx4j.fonts.PhysicalFont; 
import org.docx4j.fonts.PhysicalFonts; 
import org.docx4j.openpackaging.exceptions.Docx4JException;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
public class DocxConverter {


    public static void main(String[] args) throws FileNotFoundException, Docx4JException, Exception {
        InputStream is = new FileInputStream(new File("D:\\Test\\C_IN0004_AppointmentLetter.docx"));
            WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.load(is);
            List sections = wordMLPackage.getDocumentModel().getSections();
            for (int i = 0; i < sections.size(); i++) {
                wordMLPackage.getDocumentModel().getSections().get(i).getPageDimensions();
            }
            Mapper fontMapper = new IdentityPlusMapper();
            PhysicalFont font = PhysicalFonts.getPhysicalFonts().get("Comic Sans MS");//set your desired font 
            fontMapper.getFontMappings().put("Algerian", font);
            wordMLPackage.setFontMapper(fontMapper);
            PdfSettings pdfSettings = new PdfSettings();
            org.docx4j.convert.out.pdf.PdfConversion conversion = new org.docx4j.convert.out.pdf.viaXSLFO.Conversion(wordMLPackage);
            //To turn off logger
            List<Logger> loggers = Collections.<Logger> list(LogManager.getCurrentLoggers());
            loggers.add(LogManager.getRootLogger());
            for (Logger logger : loggers) {
                logger.setLevel(Level.OFF);
            }
            OutputStream out = new FileOutputStream(new File("D:\\Test\\C_IN0004_AppointmentLetter.pdf"));
            conversion.output(out, pdfSettings);
            System.out.println("DONE!!"); 
    }
}