Barcode4j Ausgabe Formatieren

ballibum

Aktives Mitglied
Hallo Forum,
ich erzeuge mit Barcode4j einen QR-Code, welcher mir als jpeg abgespeichert wird. Nun würde ich gerne mehrere dieser Codes in einer Datei haben (aktuell pro Code eine jpeg). Am liebsten hätte ich ein PDF-Dokument mit mehreren Seiten. Wobei eine Seite nur 5cm breit und 5cm hoch sein sollte und nur einen Code beinhalten soll.
Ich habe schon viel gesucht und getan, aber leider stehe ich da wohl auf dem Holzweg.
Anbei der Code so wie er arbeitet:

Java:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class BarcodeGenerator {

	public static void createFile(int id, String options)
	{
		String strFilePath = "C://test//qr"+id+".jpg";
		try
		{
			FileOutputStream fos = new FileOutputStream(strFilePath);

			
			
			Barcode barcode = new Barcode();
			barcode.createBarcode(id+", "+options, 300);
			fos.write(barcode.getBarcode());

			

			fos.close();
		}
		catch (FileNotFoundException ex)
		{
         System.out.println("FileNotFoundException : " + ex);
		}
		catch (IOException ioe) 
		{
         System.out.println("IOException : " + ioe);
        }
	}	
}

und die dazugehörige Klasse:

Java:
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;

import org.krysalis.barcode4j.impl.qr.QRCodeBean;
import org.krysalis.barcode4j.output.bitmap.BitmapCanvasProvider;

public class Barcode {
	
	private byte[] picByte = null;
	
	public Barcode() {
		super();
		this.picByte = picByte;
	}
	
	public void createBarcode(String code, int dpi)
	{
		try
        {
            
            QRCodeBean bean = new QRCodeBean();
            ByteArrayOutputStream bytesa = new ByteArrayOutputStream();
            try
            {
                // Set up the canvas provider for monochrome JPEG output
                BitmapCanvasProvider canvas = new BitmapCanvasProvider(bytesa,
                        "image/jpeg", dpi, BufferedImage.TYPE_BYTE_BINARY,
                        false, 0);
                bean.generateBarcode(canvas, code);
                canvas.finish();
                picByte = bytesa.toByteArray();
                System.out.println(picByte.length);
            } 
            finally
            {
                bytesa.close();
            }
        } 
        catch (Exception e)
        {
            // gelöscht
        }
	 }
	
	public byte[] getBarcode()
	{
		return picByte;
	}
}

Für eure Hilfe und Anregungen bin ich euch sehr dankbar.
mfg
Balli

p.s.
die Ausgabe von PDFs gelingt mir durch folgendes Tuorial:
Javabeginners - PDFschreiben
 
Zuletzt bearbeitet:
Okay, ich nutze also nun folgendes Programm zum erstellen einer PDF:

Java:
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.net.MalformedURLException; 

import com.itextpdf.text.Document; 
import com.itextpdf.text.DocumentException; 
import com.itextpdf.text.Image; 
import com.itextpdf.text.PageSize; 
import com.itextpdf.text.pdf.BaseFont; 
import com.itextpdf.text.pdf.PdfContentByte; 
import com.itextpdf.text.pdf.PdfWriter; 

public class PDFSchreiben { 

    public static final String PDF = "/test/document.pdf"; 

    public void createPdf(String filename) throws DocumentException, 
            IOException { 
        Document document = new Document(); 
        PdfWriter writer = PdfWriter.getInstance(document, 
                new FileOutputStream(filename)); 
        document.open(); 

        PdfContentByte cb = writer.getDirectContent(); 
        BaseFont bf = BaseFont.createFont(); 
        setImage(cb, "img/memory.png", 40); 
        cb.beginText(); 
        cb.setFontAndSize(bf, 12); 
        cb.moveText(20, 105); 
        cb.showText("Falsches Üben von Xylophonmusik quält jeden größeren Zwerg."); 
        cb.moveText(120, -16); 
        cb.setCharacterSpacing(2); 
        cb.setWordSpacing(12); 
        cb.newlineShowText("Erst recht auch jeden kleineren."); 
        cb.endText(); 

        document.close(); 

    } 

    private void setImage(PdfContentByte cb, String imgPath, float scalePercent) 
            throws MalformedURLException, IOException, DocumentException { 
        Image img = Image.getInstance(imgPath); 
        img.scalePercent(scalePercent); 
        img.setAbsolutePosition(cb.getXTLM(), cb.getYTLM()); 
        cb.addImage(img); 
    } 

    private void printMeasures(){ 
        System.out.println("A4-Ma\u00DFe: " + PageSize.A4.getWidth() + "pt x " 
                + PageSize.A4.getHeight() + "pt - " 
                + (PageSize.A4.getWidth() * 0.3527) + "mm x " 
                + (PageSize.A4.getHeight() * 0.3527) + "mm"); 
    } 

    public static void main(String[] args) throws DocumentException, 
            IOException { 
        PDFSchreiben ps = new PDFSchreiben(); 
        ps.createPdf(PDF); 
        ps.printMeasures(); 
        System.out.println("done"); 
    } 
}
Also ich kann eine PDF erzeugen indem ich alle generierten jpegs einlese und verarbeite und anschließend lösche, das ist mir ehrlich gesagt zu kompliziert-bin gerade am Senieren, wie ich das gelöst bekomme.
mfg
Balli
 
Folgendes gelingt mir bereits:
-einfügen meherer Bilder(QR Codes)

folgendes misslingt mir leider:
-Codes auf eigene Seiten bringen
-Seitengröße anpassen
-QR Codes direkt ohne Zwischenspeicherung ins PDF integrieren.

für Hilfe wäre ich euch sehr dankbar!
 

Zurück
Oben