在java中将docx文件转换为pdf..问题
我正在开发一个项目,需要一个docx文件转换为pdf。我发现同样的问题已经发布,并使用了“Kishan C S”提供的代码。它使用docx4J2.8.1 代码运行良好,生成了pdf,但我面临的唯一问题是docx文件包含logo.jpg(图像标题部分),未进行转换。只有文本格式转换为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
导入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!!");
}
}