2015-06-03 6 views
2

У меня есть файл docx4j сгенерированный файл, который содержит несколько таблиц, заголовков и, наконец, диаграмму кривой, генерируемую excel.Преобразование docx, содержащего диаграмму в PDF

Я пробовал много подходов, чтобы преобразовать этот файл в PDF, но не получил никакого успешного результата.

  1. Docx4j с xsl-fo не работает, большинство вещей, включенных в файл docx, еще не реализованы и отображаются в красном тексте как «не реализованы».
  2. JODConverter тоже не работал, я получил итоговый PDF-файл, в котором все было довольно неплохо (только небольшие проблемы с форматированием/стилем), но график не отображался.
  3. Наконец, самый близкий подход заключался в использовании Apache POI: полученный PDF-файл был идентичен файлу docx, но пока не отображается диаграмма.
  4. Я уже знаю, что Aspose решит это довольно легко, но я ищу бесплатное решение с открытым исходным кодом.

код я использую с Apache POI выглядит следующим образом:

public static void convert(String inputPath, String outputPath) 
     throws XWPFConverterException, IOException { 
    PdfConverter converter = new PdfConverter(); 
    converter.convert(new XWPFDocument(new FileInputStream(new File(
      inputPath))), new FileOutputStream(new File(outputPath)), 
      PdfOptions.create()); 
} 

Я не знаю, что делать, чтобы получить диаграмму внутри PDF, может кто-нибудь сказать мне, как поступить?

Заранее благодарен.

ответ

3

Я не знаю, поможет ли это вам, но вы можете использовать «jacob» (я не знаю, возможно ли это с помощью apache poi или docx4j) С помощью этого решения вы сами открываете «Word» и экспортируете его в формате pdf ,

! Слово должно быть установлено на компьютере!

Heres загрузки страниц: http://sourceforge.net/projects/jacob-project/

try {   
     if (System.getProperty("os.arch").contains("64")) { 
      System.load(DLL_64BIT_PATH); 
     } else { 
      System.load(DLL_32BIT_PATH); 
     } 
    } catch (UnsatisfiedLinkError e) { 
     //TODO   
    } catch (IOException e) { 
     //TODO   
    } 

ActiveXComponent oleComponent = new ActiveXComponent("Word.Application"); 
oleComponent.setProperty("Visible", false); 
Variant var = Dispatch.get(oleComponent, "Documents"); 
Dispatch document = var.getDispatch(); 

Dispatch activeDoc = Dispatch.call(document, "Open", fileName).toDispatch(); 

// https://msdn.microsoft.com/EN-US/library/office/ff845579.aspx 
Dispatch.call(activeDoc, "ExportAsFixedFormat", new Object[] { "path to pdfFile.pdf", new Integer(17), false, 0 }); 
Object args[] = { new Integer(0) };//private static final int DO_NOT_SAVE_CHANGES = 0; 
Dispatch.call(activeDoc, "Close", args); 
Dispatch.call(oleComponent, "Quit"); 
+0

Wow дружище, это было потрясающе. Благодаря миллиону, я много лет боролся с этим, и это было решением! – Keews

+0

@ Keews рад услышать, как это помогло. (Я прошел через то же самое). Я закончил работу над созданием/редактированием Word с помощью jacob. Вряд ли есть какая-либо документация, но если вы просматриваете страницы помощи net/microsoft, вы можете сделать почти что угодно ... – griFlo

+0

определенно это инструмент, который я искал :) Спасибо! – Keews

Смежные вопросы