یک تصویر سفارشی BarCode ایجاد کنید

بارکد یک نمایش بصری از داده ها به شکل خطوط موازی یا الگوها است. بارکد به طور گسترده ای در صنایع مختلف مانند خرده فروشی، تدارکات، مراقبت های بهداشتی، بانکداری و بسیاری دیگر استفاده می شود.

Microsoft Word به کاربران اجازه می دهد تا بارکد ها را مستقیما در اسناد با استفاده از فیلد ها جاسازی کنند. کاربران می توانند یک نوع بارکد خاص مانند یک کد QR یا یک بارکد خطی را با استفاده از BARCODE میدان.

در این مقاله، ما به چگونگی اجرای فیلد BARCODE در Aspose.Words و چگونگی Aspose.Words اجازه می دهد تا کاربران با اسناد ورد که بارکد به آن اضافه شده است کار کنند.

انواع بارکد پشتیبانی شده توسط Aspose.Words

Aspose.Words از انواع مختلف بارکد پشتیبانی می کند. نوع بارکد به عنوان یک مقدار رشته در ویژگی BarcodeType منتقل می شود.

هنگام ذخیره کردن به فرمت های Word که از بارکد پشتیبانی می کنند، می توانید از هر نوع بارکد که پشتیبانی شده توسط Microsoft Word. اگر یک نوع بارکد نادرست منتقل شده باشد، Word یک خطا را نمایش می دهد.

هنگام ذخیره به فرمت های دیگر، مانند PDF، Aspose.Words ارائه بارکد را به کد کاربر واگذار می کند، بنابراین کاربر به انواع بارکد پیاده سازی یا کتابخانه مورد استفاده خود محدود می شود.

یک بارکد را در یک سند قرار دهید یا یک سند را با یک بارکد اضافه شده بارگذاری کنید

Aspose.Words توانایی:

  1. به صورت برنامه ریزی شده یک بارکد را با استفاده از DisplayBarcode و MergeBarcode کد های فیلد
  2. یا یک سند ورد را با بارکد هایی که قبلا در آن قرار داده شده است برای کار بیشتر بارگذاری کنید

Aspose.Words دارای رابط کاربری برای تولید بارکد های سفارشی است که استفاده از آن را آسان می کند Aspose.Words و اسپوزBarCode با هم برای ارائه تصاویر بارکد در اسناد خروجی. به عنوان مثال، شما می توانید یک سند DOC، OOXML یا RTF ایجاد کنید و با استفاده از Aspose.Words فیلد DISPLAYBARCODE را به آن اضافه کنید. یا می توانید یک سند DOC، OOXML یا RTF را با DISPLAYBARCODE فیلد موجود در آن بارگذاری کنید و پیاده سازی خود را از ژنراتور بارکد سفارشی ارائه دهید.

یک فیلد معمولی DISPLAYBARCODE دارای نحو زیر است:

{ DISPLAYBARCODE "SomeData" QR \h 720 }

در زیر یک ژنراتور کد نمونه با استفاده از Aspose.Words و Aspose است.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 ppi جاسازی شده برای تصاویر تولید شده با IBarcodeGenerator پشتیبانی می کند که حداقل اندازه یک تصویر بارکد را محدود می کند. برای رفع این مشکل، توسعه دهندگان می توانند تصاویر بارکد با وضوح هدف را به صورت دستی در یک سند Word قرار دهند و آنها را در قالب مورد نیاز ذخیره کنند. برای جزئیات بیشتر و نمونه هایی از کار با بارکد، به مقاله مراجعه کنید خواندن بارکد از اسناد ورد.