สร้างภาพที่กำหนดเองBarCode
บาร์โค้ดคือการแสดงภาพของข้อมูลในรูปแบบของเส้นขนานหรือรูปแบบ บาร์โค้ดถูกนำมาใช้กันอย่างแพร่หลายในอุตสาหกรรมต่างๆเช่นค้าปลีกโลจิสติกส์การดูแลสุขภาพการธนาคารและอื่นๆอีกมากมาย.
Microsoft Wordช่วยให้ผู้ใช้สามารถฝังบาร์โค้ดลงในเอกสารโดยตรงโดยใช้ฟิลด์ ผู้ใช้สามารถแทรกชนิดของบาร์โค้ดเช่นรหัสQRหรือบาร์โค้ดเชิงเส้นโดยใช้ BARCODE สนาม.
ในบทความนี้เราจะดูว่าฟิลด์BARCODEถูกนำมาใช้อย่างไรในAspose.Wordsและวิธีที่Aspose.Wordsช่วยให้ผู้ใช้สามารถทำงานกับเอกสารคำที่บาร์โค้ดได้ถูกเพิ่มเข้าไป.
ประเภทบาร์โค้ดที่รองรับโดยAspose.Words
Aspose.Wordsรองรับบาร์โค้ดประเภทต่างๆ ชนิดบาร์โค้ดจะถูกส่งผ่านเป็นค่าสตริงในคุณสมบัติBarcodeType.
เมื่อบันทึกรูปแบบคำที่สนับสนุนบาร์โค้ดคุณสามารถใช้ชนิดของบาร์โค้ดใดๆที่เป็น สนับสนุนโดยMicrosoftคำ. หากชนิดของบาร์โค้ดไม่ถูกต้องถูกส่งผ่านคำจะแสดงข้อผิดพลาด.
เมื่อบันทึกรูปแบบอื่นๆเช่นPDF,Aspose.Wordsผู้รับมอบหมายการแสดงผลบาร์โค้ดไปยังรหัสผู้ใช้เพื่อให้ผู้ใช้จ.
แทรกบาร์โค้ดลงในเอกสารหรือโหลดเอกสารที่มีบาร์โค้ดเพิ่ม
Aspose.Wordsให้ความสามารถในการ:
- โปรแกรมแทรกบาร์โค้ดลงในเอกสารโดยใช้ DisplayBarcode และ MergeBarcode รหัสฟิลด์
- หรือโหลดเอกสารคำที่มีบาร์โค้ดใส่ลงไปแล้วสำหรับการทำงานต่อไป
Aspose.Wordsมีอินเตอร์เฟซสำหรับการสร้างบาร์โค้ดที่กำหนดเองที่ทำให้ใช้งานง่าย Aspose.Words และ แอสโปสBarCode ร่วมกันเพื่อแสดงภาพบาร์โค้ดในเอกสารที่ส่งออก ตัวอย่างเช่นคุณสามารถสร้างเอกสารDOC,OOXMLหรือRTFและเพิ่มฟิลด์DISPLAYBARCODEลงในฟิลด์นั้นโดยใช้Aspose.Words หรือคุณสามารถโหลดDOC,OOXMLหรือRTFเอกสารที่มีDISPLAYBARCODEฟิลด์ที่มีอยู่แล้วในนั้นและให้การดำเนินงานของเครื่.
ฟิลด์DISPLAYBARCODEทั่วไปมีไวยากรณ์ต่อไปนี้:
{ DISPLAYBARCODE "SomeData" QR \h 720 }
ด้านล่างนี้เป็นเครื่องกำเนิดไฟฟ้ารหัสตัวอย่างโดยใช้Aspose.WordsและแอสโพสBarCode APIs. ตัวอย่างนี้แสดงวิธีการแทรกรูปภาพบาร์โค้ดที่DISPLAYBARCODEตำแหน่งฟิลด์ในเอกสารคำ:
// 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; | |
} | |
} | |
} |
นอกจากนี้คุณยังสามารถบันทึกเอกสารด้วยบาร์โค้ดที่โหลดหรือแทรกใหม่ในรูปแบบหน้าคงที่เช่นPDF,XPSฯลฯ ตัวอย่างรหัสต่อไปนี้แสดงวิธีการบันทึกเอกสารคำลงในรูปแบบPDF:
// 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"); |
ระบุตัวเลือกบาร์โค้ด
เมื่อทำงานกับบาร์โค้ดคุณสามารถตั้งค่าคุณสมบัติเพิ่มเติมบางอย่าง Aspose.Wordsให้คุณBarcodeParametersชั้นชั้นสำหรับพารามิเตอร์บาร์โค้ดที่จะผ่านไปBarcodeGenerator.
Aspose.Wordsรองรับความละเอียด 96 จุดอ่อนที่ฝังตัวสำหรับภาพที่สร้างขึ้นด้วยIBarcodeGeneratorซึ่งจะจำกัดขนาดขั้นต่ำขอ Toแทรกภาพบาร์โค้ดที่มีความละเอียดเป้าหมายลงในเอกสารคำและบันทึกไว้ในรูปแบบที่ สำหรับรายละเอียดเพิ่มเติมและตัวอย่างในการทำงานกับบาร์โค้ดโปรดดูบทความ อ่านบาร์โค้ดจากเอกสารคำ.