Есть много вопросов о том, как получить рабочий код для вставки изображений в 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 и преобразует его в штрих-коды элементов. Пользовательский интерфейс и рефакторинг будут работать позже:)