Özel bir Barkod Görseli Oluşturun
Bir barkod verilerin paralel çizgiler veya desenler biçiminde görsel bir temsiliğidir. Barkodlar perakende, lojistik, sağlık, bankacılık ve daha fazlası gibi çeşitli endüstrilerde yaygın olarak kullanılmaktadır.
Microsoft Word kullanıcıların belgelere alanlara yerleştirerek barkodlar doğrudan gömmesini sağlar. Kullanıcılar bir QR kodu veya doğrusal bir barkod gibi belirli bir tür barkodu bir BARCODE alanı kullanarak ekleyebilir.
Bu makale, “BARKOD” alanının Aspose.Words içinde nasıl uygulandığını ve kullanıcıların bir barkodun zaten eklendiği kelime belgeleriyle çalışmasına izin veren Aspose.Words’a nasıl izin verdiğini inceleyecektir.
Aspose.Words tarafından desteklenen Barkod Türleri
Aspose.Words çeşitli türlerde barkodları destekler. Barkod türü, BarcodeType özelliğinde bir dize değeri olarak geçirilir.
Bar kode destekleyen kelime biçimlerinde kaydetme yaparken herhangi bir tür bar kodu kullanabilirsiniz supported by Microsoft Word. Yanlış bir bar kod türü geçirilirse, Word hata gösterecektir.
Diğer formatlara kaydetme yaparken, pdf gibi, Aspose.Words barkod gösterimi kullanıcının koduna bırakır ve kullanıcı kendi uygulamasına veya kullandığı kütüphaneye bağlı olarak barkod tiplerine sınırlandırılır.
Bir Doküman İçine Bir Barcode Ekleyin veya Bir Dokümana Eklenen Bir Barcode ile Bir Dokümanı Yükleyin
Aspose.Words sağlar, yeteneğiniz:
- Bir belgedeki bir barkodu programatik olarak DisplayBarcode ve MergeBarcode alan kodlarını kullanarak ekleyin
- Daha fazla çalışma için bir Word belgesine zaten eklenmiş çubuk kodları içeren yükleyin
Aspose.Words özel barkod üretmek için bir arayüz sunar ve bu da Aspose.Words‘i ve Aspose.BarCode‘i birlikte kullanmayı kolaylaştırır, böylece çıktı belgelerinde barkod görüntüleri oluşturulabilir. Örneğin, bir DOC, OOXML veya RTF belgesini oluşturabilir ve “Aspose.Words” kullanarak bu belgelere DISPLAYBARCODE alanını ekleyebilirsiniz. Ya da zaten mevcut bir DisplayBarcode alanına sahip bir DOC, OOXML veya RTF belgesini yükleyebilir ve özel bir barkod üretici uygulaması sağlayabilirsiniz.
Tipik bir DISPLAYBARCODE alanı aşağıdaki sözdizimine sahiptir:
{ DISPLAYBARCODE "SomeData" QR \h 720 }
Aşağıda, Aspose.Words ve Aspose.BarCode APIs’yi kullanan bir örnek kod oluşturucu gösterilmektedir. Bu örnek, bir Word belgesindeki DISPLAYBARCODE alan konumuna barkod görüntüleri eklemeyi gösterir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(getMyDir() + "Field sample - BARCODE.docx"); | |
doc.getFieldOptions().setBarcodeGenerator(new CustomBarcodeGenerator()); | |
doc.save(getArtifactsDir() + "WorkingWithBarcodeGenerator.GenerateACustomBarCodeImage.pdf"); |
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
public class CustomBarcodeGenerator extends DocsExamplesBase implements IBarcodeGenerator | |
{ | |
/// <summary> | |
/// Converts barcode image height from Word units to Aspose.BarCode units. | |
/// </summary> | |
/// <param name="heightInTwipsString"></param> | |
/// <returns></returns> | |
private static float convertSymbolHeight(String heightInTwipsString) throws Exception { | |
// Input value is in 1/1440 inches (twips). | |
int heightInTwips = tryParseInt(heightInTwipsString); | |
if (heightInTwips == Integer.MIN_VALUE) | |
throw new Exception("Error! Incorrect height - " + heightInTwipsString + "."); | |
// Convert to mm. | |
return (float) (heightInTwips * 25.4 / 1440.0); | |
} | |
/// <summary> | |
/// Converts barcode image color from Word to Aspose.BarCode. | |
/// </summary> | |
/// <param name="inputColor"></param> | |
/// <returns></returns> | |
private static Color convertColor(String inputColor) throws Exception { | |
// Input should be from "0x000000" to "0xFFFFFF". | |
int color = tryParseHex(inputColor.replace("0x", "")); | |
if (color == Integer.MIN_VALUE) | |
throw new Exception("Error! Incorrect color - " + inputColor + "."); | |
return new Color((color >> 16), ((color & 0xFF00) >> 8), (color & 0xFF)); | |
// Backward conversion - | |
// return string.Format("0x{0,6:X6}", mControl.ForeColor.ToArgb() & 0xFFFFFF); | |
} | |
/// <summary> | |
/// Converts bar code scaling factor from percent to float. | |
/// </summary> | |
/// <param name="scalingFactor"></param> | |
/// <returns></returns> | |
private static float convertScalingFactor(String scalingFactor) throws Exception { | |
boolean isParsed = false; | |
int percent = tryParseInt(scalingFactor); | |
if (percent != Integer.MIN_VALUE && percent >= 10 && percent <= 10000) | |
isParsed = true; | |
if (!isParsed) | |
throw new Exception("Error! Incorrect scaling factor - " + scalingFactor + "."); | |
return percent / 100.0f; | |
} | |
/// <summary> | |
/// Implementation of the GetBarCodeImage() method for IBarCodeGenerator interface. | |
/// </summary> | |
/// <param name="parameters"></param> | |
/// <returns></returns> | |
public BufferedImage getBarcodeImage(BarcodeParameters parameters) throws Exception { | |
if (parameters.getBarcodeType() == null || parameters.getBarcodeValue() == null) | |
return null; | |
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.QR); | |
String type = parameters.getBarcodeType().toUpperCase(); | |
switch (type) | |
{ | |
case "QR": | |
generator = new BarcodeGenerator(EncodeTypes.QR); | |
break; | |
case "CODE128": | |
generator = new BarcodeGenerator(EncodeTypes.CODE_128); | |
break; | |
case "CODE39": | |
generator = new BarcodeGenerator(EncodeTypes.CODE_39_STANDARD); | |
break; | |
case "EAN8": | |
generator = new BarcodeGenerator(EncodeTypes.EAN_8); | |
break; | |
case "EAN13": | |
generator = new BarcodeGenerator(EncodeTypes.EAN_13); | |
break; | |
case "UPCA": | |
generator = new BarcodeGenerator(EncodeTypes.UPCA); | |
break; | |
case "UPCE": | |
generator = new BarcodeGenerator(EncodeTypes.UPCE); | |
break; | |
case "ITF14": | |
generator = new BarcodeGenerator(EncodeTypes.ITF_14); | |
break; | |
case "CASE": | |
generator = new BarcodeGenerator(EncodeTypes.NONE); | |
break; | |
} | |
if (generator.getBarcodeType().equals(EncodeTypes.NONE)) | |
return null; | |
generator.setCodeText(parameters.getBarcodeValue()); | |
if (generator.getBarcodeType().equals(EncodeTypes.QR)) | |
generator.getParameters().getBarcode().getCodeTextParameters().setTwoDDisplayText(parameters.getBarcodeValue()); | |
if (parameters.getForegroundColor() != null) | |
generator.getParameters().getBarcode().setBarColor(convertColor(parameters.getForegroundColor())); | |
if (parameters.getBackgroundColor() != null) | |
generator.getParameters().setBackColor(convertColor(parameters.getBackgroundColor())); | |
if (parameters.getSymbolHeight() != null) | |
{ | |
generator.getParameters().getImageHeight().setPixels(convertSymbolHeight(parameters.getSymbolHeight())); | |
generator.getParameters().setAutoSizeMode(AutoSizeMode.NONE); | |
} | |
generator.getParameters().getBarcode().getCodeTextParameters().setLocation(CodeLocation.NONE); | |
if (parameters.getDisplayText()) | |
generator.getParameters().getBarcode().getCodeTextParameters().setLocation(CodeLocation.BELOW); | |
generator.getParameters().getCaptionAbove().setText(""); | |
// Empiric scaling factor for converting Word barcode to Aspose.BarCode. | |
final float SCALE = 2.4f; | |
float xdim = 1.0f; | |
if (generator.getBarcodeType().equals(EncodeTypes.QR)) | |
{ | |
generator.getParameters().setAutoSizeMode(AutoSizeMode.NEAREST); | |
generator.getParameters().getImageWidth().setInches(generator.getParameters().getImageWidth().getInches() * SCALE); | |
generator.getParameters().getImageHeight().setInches(generator.getParameters().getImageWidth().getInches()); | |
xdim = generator.getParameters().getImageHeight().getInches() / 25; | |
generator.getParameters().getBarcode().getXDimension().setInches(xdim); | |
generator.getParameters().getBarcode().getBarHeight().setInches(xdim); | |
} | |
if (parameters.getScalingFactor() != null) | |
{ | |
float scalingFactor = convertScalingFactor(parameters.getScalingFactor()); | |
generator.getParameters().getImageHeight().setInches(generator.getParameters().getImageHeight().getInches() * scalingFactor); | |
if (generator.getBarcodeType().equals(EncodeTypes.QR)) | |
{ | |
generator.getParameters().getImageWidth().setInches(generator.getParameters().getImageHeight().getInches()); | |
generator.getParameters().getBarcode().getXDimension().setInches(xdim * scalingFactor); | |
generator.getParameters().getBarcode().getBarHeight().setInches(xdim * scalingFactor); | |
} | |
generator.getParameters().setAutoSizeMode(AutoSizeMode.NONE); | |
} | |
return generator.generateBarCodeImage(); | |
} | |
/// <summary> | |
/// Implementation of the GetOldBarcodeImage() method for IBarCodeGenerator interface. | |
/// </summary> | |
/// <param name="parameters"></param> | |
/// <returns></returns> | |
public BufferedImage getOldBarcodeImage(BarcodeParameters parameters) | |
{ | |
if (parameters.getPostalAddress() == null) | |
return null; | |
BarcodeGenerator generator = new BarcodeGenerator(EncodeTypes.POSTNET); | |
{ | |
generator.setCodeText(parameters.getPostalAddress()); | |
} | |
return generator.generateBarCodeImage(); | |
} | |
/// <summary> | |
/// Parses an integer using the invariant culture. Returns Int.MinValue if cannot parse. | |
/// | |
/// Allows leading sign. | |
/// Allows leading and trailing spaces. | |
/// </summary> | |
public static int tryParseInt(String s) { | |
try { | |
double value = Double.parseDouble(s); | |
return castDoubleToInt(value); | |
} catch (NumberFormatException e) { | |
return Integer.MIN_VALUE; | |
} | |
} | |
/// <summary> | |
/// Casts a double to int32 in a way that uint32 are "correctly" casted too (they become negative numbers). | |
/// </summary> | |
public static int castDoubleToInt(double value) | |
{ | |
long temp = (long) value; | |
return (int) temp; | |
} | |
/// <summary> | |
/// Try parses a hex String into an integer value. | |
/// on error return int.MinValue | |
/// </summary> | |
public static int tryParseHex(String s) | |
{ | |
try { | |
return Integer.parseInt(s); | |
} catch (NumberFormatException e) { | |
return Integer.MIN_VALUE; | |
} | |
} | |
} |
Yüklenen veya yeni eklenen barkod içeren belgeyi sabit sayfa biçimlerinde PDF, XPS vb. kullanarak de kaydedebilirsiniz. Aşağıdaki kod örneği, bir Word belgesini PDF biçiminde kaydetmenin nasıl yapılacağını göstermektedir:
// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-Java.git. | |
Document doc = new Document(getMyDir() + "Document.docx"); | |
doc.save(getArtifactsDir() + "BaseConversions.DocxToPdf.pdf"); |
Bar Kod Seçeneklerini Belirtin
Barcodes ile çalışırken ek özellikler ayarlayabilirsiniz. Aspose.Words size BarcodeParameters sınıfı – BarcodeGenerator’e geçecek parametreler için barcode parametreleri sınıfını verir.
Aspose.Words IBarcodeGenerator‘ile oluşturulan görüntülerde gömülü 96 ppi çözünürlük destekler, bu da bir barkod görüntüsünün minimum boyutunu sınırlar. Bu sorunu çözmek için geliştiriciler, hedef çözünürlüğe sahip barkod görüntülerini el ile Word belgesine ekleyebilir ve gerekli biçimde kaydedebilirler. Daha fazla bilgi ve barkodlarla çalışma örneği için Read Barcodes from Word Documents‘e bakın.