MyPrint打印设计器(三)设置整个条码宽度,让条形码填充整个div

MyPrint打印设计器(三)设置整个条码宽度,让条形码填充整个div

让条形码填充整个div

所需环境:

  • 浏览器
  • js

实现目标

  • 设置整个元素的宽度,让条形码自适应填充整个宽度

JsBarcode 设置只支持设置每个条之间的宽度,并不支持设置整个条码的宽度,所以无法让条形码填充整个元素的宽度
如果想要设置整个条码的宽度,这个时候就需要手动通过条码的数值,
自动计算每个条之间的宽度,算法如下,根据每种条形码类型的不同逻辑,特殊处理

示例

在这里插入图片描述

核心js代码

try {
    const width = 200 // 更改宽度
    const height = 100
    const barCodeDisplayValIs = 1
    const fontSize = 13
    const barCodeType = 'CODE128'
    const data = 'Myprint-Barcode'
    const codeLength = data.length;
    let numBars;
    
    // 根据不同的条形码类型设置条数
    switch (barCodeType) {
        case 'EAN2':
            numBars = 20;
            break;
        case 'EAN5':
            numBars = 47;
            break;
        case 'EAN8':
            numBars = 67;
            break;
        case 'EAN13':
        case 'UPC':
            numBars = 95;
            break;
        case 'UPC_E':
            numBars = 57;
            break;
        case 'ITF':
            numBars = codeLength * 3;
            break;
        case 'ITF14':
            numBars = 94;
            break;
        case 'CODE39':
        case 'codabar':
            numBars = codeLength * 12;
            break;
        case 'CODE128':
        case 'CODE128A':
        case 'CODE128B':
        case 'CODE128C':
            numBars = codeLength * 11;
            break;
        case 'pharmacode':
            numBars = codeLength * 10;
            break;
        case 'MSI':
        case 'MSI10':
        case 'MSI11':
        case 'MSI1010':
        case 'MSI1110':
            numBars = codeLength * 2.5;
            break;
        default:
            numBars = codeLength * 7;  // 默认设置
    }
    
    const barWidth = width / numBars;
    
    JsBarcode('#code128', data, {
        format: barCodeType,//选择要使用的条形码类型
        width: barWidth, //设置条之间的宽度
        height: height - (barCodeDisplayValIs ? fontSize : 0),//高度
        displayValue: barCodeDisplayValIs,//是否在条形码下方显示文字
        //   text:"456",//覆盖显示的文本
        //   fontOptions:"bold italic",//使文字加粗体或变斜体
        //   font:"fantasy",//设置文本的字体
        //   textAlign:"left",//设置文本的水平对齐方式
        //   textPosition:"top",//设置文本的垂直位置
        textMargin: 0,//设置条形码和文本之间的间距
        fontSize: fontSize,//设置文本的大小
        background: 'white',//设置条形码的背景
        lineColor: 'black',//设置条和文本的颜色。
        margin: 0//设置条形码周围的空白边距
    });

} catch (e) {
    console.log('不支持的内容')
}

代码仓库

在线体验

代码仓库:github

代码仓库:gitee

实战项目:MyPrint 可视化打印设计器

操作简单,组件丰富的一站式打印解决方案打印设计器

体验地址:前往

代码仓库:github

代码仓库:gitee

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C# ObjectARX 是 AutoCAD 的 .NET API,可以通过 C# 代码实现 AutoCAD 的二次开发。下面是按范围打印设置打印样式表的示例代码: ```csharp using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.GraphicsInterface; using Autodesk.AutoCAD.PlottingServices; using Autodesk.AutoCAD.Publishing; namespace MyCommands { public class MyCommandsClass { [CommandMethod("MyPrint")] public void MyPrint() { Document doc = Application.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; // 获取打印范围 PromptPointResult ppr = ed.GetPoint("\n请指定打印范围的第一个角点:"); if (ppr.Status != PromptStatus.OK) return; Point3d pt1 = ppr.Value; ppr = ed.GetCorner("\n请指定打印范围的第二个角点:", pt1); if (ppr.Status != PromptStatus.OK) return; Point3d pt2 = ppr.Value; // 设置打印样式表 string styleSheetName = "MyStyleSheet"; if (!PlotSettingsValidator.StyleSheetExists(styleSheetName)) { PlotSettingsValidator.AddNewStyleSheet(styleSheetName); } PlotSettingsValidator.SetCurrentStyleSheet(styleSheetName); // 创建打印信息 PlotInfo pi = new PlotInfo(); pi.Layout = "*Model_Space"; pi.OverrideSettings = null; // 创建打印设备 PlotSettings ps = new PlotSettings(doc.Editor); ps.CopyFrom(pi); // 设置打印范围 ps.SetPlotWindowArea(pt1, pt2); // 设置打印样式 ps.PlotStyleName = "monochrome.ctb"; // 创建打印对象 PlotInfoValidator piv = new PlotInfoValidator(); piv.MediaMatchingPolicy = MatchingPolicy.MatchEnabled; piv.Validate(pi); // 打印 PlotEngine pe = PlotFactory.CreatePublishEngine(); pe.BeginPlot(null, null); pe.BeginDocument(pi, doc.Name, null, 1, true, null); pe.BeginPage(new PlotPageInfo(), pi, true, null); pe.SetPlotSettings(ps); pe.BeginGenerateGraphics(null); pe.EndGenerateGraphics(null); pe.EndPage(null); pe.EndDocument(null); pe.EndPlot(null); } } } ``` 以上代码实现了按指定范围打印设置打印样式表。需要注意的是,代码中的打印范围是使用 `SetPlotWindowArea` 方法设置的,打印样式表是使用 `PlotStyleName` 属性设置的。你可以根据自己的需要修改这些参数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值