Я полагаю, работает ли это или нет, сильно зависит от используемой версии apache poi
. В предыдущих apache poi
версиях было много проблем с изображениями в верхнем / нижнем колонтитулах.
Ниже приведен самый минимальный рабочий код, использующий apache poi 4.0.1
. Рекомендуется всегда использовать последнюю стабильную версию .:
Код:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import org.apache.poi.xwpf.usermodel.*;
import org.apache.poi.wp.usermodel.HeaderFooterType;
import org.apache.poi.util.Units;
public class CreateWordHeaderWithImage {
public static void main(String[] args) throws Exception {
XWPFDocument doc = new XWPFDocument();
// the body content
XWPFParagraph paragraph = doc.createParagraph();
XWPFRun run = paragraph.createRun();
run.setText("The Body...");
// create header
XWPFHeader header = doc.createHeader(HeaderFooterType.DEFAULT);
// header's first paragraph
paragraph = header.getParagraphArray(0);
if (paragraph == null) paragraph = header.createParagraph();
paragraph.setAlignment(ParagraphAlignment.CENTER);
run = paragraph.createRun();
FileInputStream in = new FileInputStream("samplePict.jpeg");
run.addPicture(in, Document.PICTURE_TYPE_JPEG, "samplePict.jpeg", Units.toEMU(100), Units.toEMU(50));
in.close();
run.setText("HEADER");
FileOutputStream out = new FileOutputStream("CreateWordHeaderWithImage.docx");
doc.write(out);
doc.close();
out.close();
}
}
Результат:
Используйте HIWindowGetCGWindowID для получения CGWindowID для WindowRef.
Используйте тот идентификатор с CGWindowListCreateDescriptionFromArray от CGWindow.h для получения информации об окне.
Посмотрите на возвращенный словарь и извлеките (дополнительно) kCGWindowWorkspace ключ. Это - Ваш идентификатор пространства для Вашего окна.
Если кому-то все равно, я собрал небольшую утилиту командной строки на основе ответов здесь, которые вы можете получить по адресу http://github.com/shabble/osx-space-id