Вставка изображений .png в MS Word с белым квадратом "Это изображение не может быть отображено в настоящее время - PullRequest
0 голосов
/ 07 сентября 2018

Есть много вопросов о том, как получить рабочий код для вставки изображений в MS Word, который я использовал среди других онлайн-ресурсов, чтобы продвинуться так далеко.

Мне удалось создать массив изображений (штрих-кодов) для вставки в слово, чтобы создать один файл для печати. Я использую библиотеку Barbecue для создания своих изображений штрих-кода и использую Apache POI для их вставки в MS Word. Что происходит сейчас, так это то, что изображения создаются, документ Word создается, изображение вставляется в документ, однако это белый квадрат с красным крестиком в левом верхнем углу, который гласит: «Это изображение не может быть отображено в данный момент».

[sample barcode][[https://imgur.com/a/bD4GrBE]

public class Barcode {//Creates a bar code object
//Instance fields
public String barcode;
public int count;

//Getters and Setters
public String getBarcode(){
    return barcode.toString();
}
public void setBarcode(String barcode){
    this.barcode = barcode.toString();
}
public int getCount(){
    return count;
}

//Methods
public Barcode(String code){
    setBarcode(code);
    ++count;
}

}

public class BarcodeArray {//creates the bar code array 
// Instance fields
Barcode[] barcodes;
public int numBarcodes;

final static int MAX_BARCODES = 2000;

// Getters and Setters
public Barcode[] getBarcodes() {
    return barcodes;
}
public void setBarcodes(Barcode[] barcodes) {
    this.barcodes = barcodes;
}
public int getNumBarcodes() {
    return numBarcodes;
}

// Methods
BarcodeArray() {//instantiates the bar code array with a fixed length.. //this will be changed to create the array based on the number of bar codes in the input file 
    barcodes = new Barcode[MAX_BARCODES];
}
void add(Barcode Barcode) {//method for adding a bar code to the array
    if (numBarcodes < MAX_BARCODES) {
        barcodes[numBarcodes] = Barcode;
        numBarcodes++;
        System.out.println("Barcode: " + Barcode.getBarcode() +  " added to the array");
    }
}

}

public class PrintBarcodes {

public static void main(String[] args) throws FileNotFoundException, IOException, InvalidFormatException {
    BarcodeArray myBarcode = new BarcodeArray();// instantiates new array instantiates new text file
    File file = new File("C:\\Java_Training\\Barcodes\\BarcodesForTesting.txt");

    try {
        Scanner sc = new Scanner(file);// opens a new scanner object adds bar codes from the input file to the array
        while (sc.hasNextLine())
            myBarcode.add(new Barcode(sc.nextLine()));//steps through the file and creates bar codes until scanner hits the end of file
        sc.close();
    } catch (Exception e) {
        System.out.println("File not found");
    }System.out.println("Total barcodes added to print queue: " + myBarcode.getNumBarcodes());//Prints total count

    try {
        for (int i = 0; i < myBarcode.numBarcodes; i++) {//For loop to save bar codes to the file directory
            net.sourceforge.barbecue.Barcode b = BarcodeFactory.createCode128(myBarcode.getBarcodes()[i].barcode.toString());//Creates the bar code
            File save = new File("C:\\Java_Training\\Barcodes\\" + myBarcode.getBarcodes()[i].barcode.toString() + ".jpg");
            BarcodeImageHandler.saveJPEG(b, save);  
            String dirPath = "C:\\Java_Training\\Barcodes\\";//file path to look in
            File dir = new File(dirPath);
            File[] images = dir.listFiles();//array of file objects

            for(File aFile : images){
                System.out.println(aFile.getName());

                  XWPFDocument doc = new XWPFDocument();//creates a new word document
                    XWPFParagraph title = doc.createParagraph();//defines a paragraph
                    XWPFRun run = title.createRun();
                    run.setText("Barcodes");//Sets title
                    run.setBold(true);//Title style
                    title.setAlignment(ParagraphAlignment.CENTER);//title location on page

                    String imgFile = "C:\\Java_Training\\Barcodes\\" + aFile.getName();
                    FileInputStream fs = new FileInputStream(imgFile);
                    run.addBreak();
                    run.addPicture(fs, XWPFDocument.PICTURE_TYPE_JPEG, imgFile, Units.toEMU(50), Units.toEMU(150)); // 200x200 pixels
                    FileOutputStream fos = new FileOutputStream("C:\\Java_Training\\Barcodes\\Barcodes.docx");
                    fs.close();
                    doc.write(fos);
                    fos.close();                                        
            }
        }
    } catch (Exception e) {
        System.out.println("Unable to save file");
    }

Кто-нибудь знает, что я могу сделать, чтобы преобразовать отображаемые изображения в слово? Цель состоит в том, чтобы создать приложение для генератора штрих-кодов для моего бизнеса, которое берет простой входной файл .txt и преобразует его в штрих-коды элементов. Пользовательский интерфейс и рефакторинг будут работать позже:)

...