Вставьте изображение в текстовый документ в Java - PullRequest
7 голосов
/ 09 февраля 2011

Может кто-нибудь указать мне правильное направление, как вставить изображение в текстовый документ в Java?

Ответы [ 3 ]

2 голосов
/ 09 февраля 2011

Просто идея:

Сначала вам нужно скачать WordAPI, который можно скачать прямо здесь . Чтобы создавать текстовые документы с помощью JAVA, есть класс, который делает все, что вам нужно. Класс называется WordProcessing .

Вот краткий предварительный просмотр методов, реализованных в этом классе:

  • createNewDocumentFromTemplate (String templateName)
  • createNewDocumentFromTemplateToSelectByUser ()
  • setNoteNotMatchingBookmarks (логическая заметкаNotMatchingBookmarks)
  • typeTextAtBookmark (строковая закладка, String textToType)
  • typeTextAtBookmark (строковая закладка, String [] linesToType)
  • changeDocumentDirectory (String documentDirectory)
  • saveDocumentAs (String documentName)
  • saveDocumentAsAndClose (String documentName)
  • closeDocument ()
  • printAndForget ()
  • printToPrinterToSelectByUserAndForget ()
  • printAndForget (String printerName)
  • executeMacro (String macroName) <---- Вам интересно </li>
  • quitApplication ()
  • Exec ()

Как видите, существует множество полезных функций для создания вашего документа.

Теперь вы можете вставить изображение, вызвав функцию executeMacro.

Макрос может выглядеть так:

Option Explicit

Sub InsertPicture()

   Dim sPath As String
   Dim sBildPfad As String
   Dim lRes As Long

   'The path of your picture
   sBildPfad = "C:\temp"

   'remember the current path of the picture
   sPath = Options.DefaultFilePath(Path:=wdPicturesPath)

   'changing the path
   Options.DefaultFilePath(Path:=wdPicturesPath) = sBildPfad

   'open dialog
   lRes = Application.Dialogs(wdDialogInsertPicture).Show

   'reset path
   Options.DefaultFilePath(Path:=wdPicturesPath) = sPath

   If lRes <> 0 And ActiveDocument.InlineShapes.Count > 0 Then
      'if inserted, changing the size
      Call PicSize(ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count))
   End If

End Sub

Sub PicSize(oPic As InlineShape)
   Dim iScale As Single
   Dim iWidth As Single

   iWidth = 200 ' (pixel)

   oPic.LockAspectRatio = msoTrue
   ' scaling
   iScale = (iWidth / oPic.Width) * 100
   oPic.ScaleWidth = iScale
   oPic.ScaleHeight = iScale
End Sub 
2 голосов
/ 09 февраля 2011

Какой формат файла слова вы хотите изменить? (OLE2, WordML, docx?)

Обычно наиболее широко используемая библиотека для изменения файла MSOffice - Apache POI .

Также этот урок , вероятно, будет полезен в вашем текущем случае.

1 голос
/ 15 февраля 2011

Предполагая, что с docx все в порядке, вы можете использовать docx4j. Образец AddImage включает в себя:

org.docx4j.wml.P p = newImage( wordMLPackage, bytes, 
            filenameHint, altText, 
            id1, id2 );
// Now add our p to the document
wordMLPackage.getMainDocumentPart().addObject(p);

Нет необходимости запускать Word для работы docx4j.

ps. Поскольку ваш вопрос помечен как «свинг», вы можете указать Google «docx4all» для текстового процессора docx, реализованного с использованием Swing, который отображает изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...