【问题标题】:How to get to print in DymoLabel printer using javascript?如何使用 javascript 在 Dymo Label 打印机中进行打印?
【发布时间】:2013-03-25 00:20:00
【问题描述】:

我只想从网页调用打印机的 API。只是想在里面打印一些东西。到目前为止我已经做到了。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
    <head>
        <title>Sample DYMO Label Plug-In</title>


            <script src="http://labelwriter.com/software/dls/sdk/js/DYMO.Label.Framework.latest.js"
            type="text/javascript" charset="UTF-8">


            function OnLoad()
            {
                //GetCurrentPlugin();
                GetDYMOPrinters();

                //GetPaperTray();
                //GetMRUList();
                //GetObjectNames();
                //GetLabelImage();
            }


            function GetDYMOPrinters()
            {
                alert(" Testing 1");

                var printers = dymo.label.framework.getPrinters();
                if (printers.length == 0)
                throw "No DYMO printers are installed. Install DYMO printers.";
                alert("dfdsfd");
                var printerName = "";
                for (var i = 0; i < printers.length; ++i)
                {
                    var printer = printers[i];
                    if (printer.printerType == "LabelWriterPrinter")
                    {
                        printerName = printer.name;
                        break;
                    }
                }

            var label = DYMO.Label.Framework.Label.Open("MyText.label");
            label.SetObjectText("NameTxt", "John Smith");

            alert(" Testing 2");   // Here this alert also not working .
            label.print("DYMO LabelWriter 310");
            }
     </script>

    </head>
    <body onload="OnLoad()">
         <form action="" method="post" id="DYMOLabel">
        <center>
        <h2>DYMO Label  Example</h2>
         <input type=button value="Get DYMO Printers" onClick="GetDYMOPrinters()">
     </center>
    </form>




    </body>
</html>

但是这里什么都不会发生,我需要导入或包含任何东西吗? 请给点建议..

【问题讨论】:

  • 当我运行你的代码时,它显示了 Uncaught ReferenceError: DYMO is not defined sample_dymo.html:40 GetDYMOPrinters sample_dymo.html:40 onclick

标签: javascript printing barcode-printing


【解决方案1】:

您用于嵌入“DYMO.Label.Framework.latest.js”的&lt;script&gt;-标签位于另一个脚本标签中。将其移出,您的函数应该会运行:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
    <title>Sample DYMO Label Plug-In</title>
    <!-- LabelWriter-API first -->
    <script src="http://labelwriter.com/software/dls/sdk/js/DYMO.Label.Framework.latest.js"></script>
    <!-- your script second -->
    <script>
     ...

【讨论】:

  • 谢谢,我可以使用这些功能...您知道如何调用打印机来打印一些文本或标签吗?我已经安装了所有 Dymo 的东西。
  • 我搜索了一下,找到了这个示例页面:labelwriter.com/software/dls/sdk/samples/js/… 看一下 PreviewAndPrintLabel.js,基本上它加载了一个标签-XML 设置了地址文本并打印出来。
  • 非常感谢,我会处理的。
【解决方案2】:

这是我打印多个标签的代码。为了您的帮助,我添加了 cmets。请通过这个,如果你有任何疑问,问我。我无法在此处包含我的 HTML 供您参考。

//----------------------------------------------------------------------------
//
//  PrintMultipleLabel.js  2014-11-07 : Vineesh K S 
//
// Content -------------------------------------------------------------------
//
//  DYMO Label Framework JavaScript Library : 
//  Print Single or multiple label
//  Mark-up Added   
//
//----------------------------------------------------------------------------
//
//  Copyright (c), 2010, Sanford, L.P. All Rights Reserved.
//
//----------------------------------------------------------------------------


    function escapeXml(xmlStr)
    {
        var result = xmlStr;
        var findReplace = [[/&/g, "&amp;"], [/</g, "&lt;"], [/>/g, "&gt;"], [/"/g, "&quot;"]];

        for(var i = 0; i < findReplace.length; ++i) 
            result = result.replace(findReplace[i][0], findReplace[i][1]);

        return result;
    }


    // call this function on onclick function of print button
    function printLabel()
    {
        //comma separated values of record IDs 
        var hidn_ids_array = $('#hidn_ids').val().split(",");
        // if text area is null
        var labelPrint_val = $('#labelPrint').val();        
        if(labelPrint_val == ""){
        alert("Please enter values to print label");
        $( "#labelPrint" ).focus();
        return;
        }

        try
            {
                // open label
                var labelXml = '<?xml version="1.0" encoding="utf-8"?>\
                <DieCutLabel Version="8.0" Units="twips">\
                    <PaperOrientation>Landscape</PaperOrientation>\
                    <Id>Address</Id>\
                    <PaperName>30252 Address</PaperName>\
                    <DrawCommands/>\
                    <ObjectInfo>\
                        <TextObject>\
                            <Name>Text</Name>\
                            <ForeColor Alpha="255" Red="0" Green="0" Blue="0" />\
                            <BackColor Alpha="0" Red="255" Green="255" Blue="255" />\
                            <LinkedObjectName></LinkedObjectName>\
                            <Rotation>Rotation0</Rotation>\
                            <IsMirrored>False</IsMirrored>\
                            <IsVariable>True</IsVariable>\
                            <HorizontalAlignment>Center</HorizontalAlignment>\
                            <VerticalAlignment>Middle</VerticalAlignment>\
                            <TextFitMode>ShrinkToFit</TextFitMode>\
                            <UseFullFontHeight>True</UseFullFontHeight>\
                            <Verticalized>False</Verticalized>\
                            <StyledText/>\
                        </TextObject>\
                        <Bounds X="332" Y="150" Width="4455" Height="1260" />\
                    </ObjectInfo>\
                </DieCutLabel>';
                var label = dymo.label.framework.openLabelXml(labelXml);
                if (!label)
                {
                    alert("Load label before printing");
                    return;
                }
                // set data using LabelSet and text markup
                var labelSet = new dymo.label.framework.LabelSetBuilder();

                var textMarkup = '';
                var fontSize = 18; // sets font size of first line
                // loop started for adding multiple record.
                $.each(hidn_ids_array,function(i)
                {               
                    ////get each Id
                    labelid = hidn_ids_array[i];                    
                    var textTextArea = document.getElementById('labelPrint'+labelid);// text area id

                    if(textTextArea.value !='')
                    {
                        var lines = textTextArea.value.split('\n');
                        // adding markup                
                        var boldLinesCount = lines.length <= 3 ? 1 : 2; 
                        // if no. of lines is more than 3 then apply style to first 2 lines.

                        if (lines.length > 0)
                        {                       
                            textMarkup = '<b><font family="Arial" size="' + fontSize + '">';
                            textMarkup += escapeXml(lines.slice(0, boldLinesCount).join('\n'));
                            textMarkup += '</font></b><br/>';
                            textMarkup += escapeXml(lines.slice(boldLinesCount).join('\n'));
                        }
                        /////////////add record to printer object////////////////
                        //alert(textMarkup);                        
                        var record = labelSet.addRecord();  
                        record.setTextMarkup('Text', textMarkup); // set label text 
                    }


                });
                // select printer to print on
                var printers = dymo.label.framework.getPrinters();
                if (printers.length == 0)
                    throw "No DYMO printers are installed. Install DYMO printers.";

                var printerName = "";
                for (var i = 0; i < printers.length; ++i)
                {
                    var printer = printers[i];
                    if (printer.printerType == "LabelWriterPrinter")
                    {
                        printerName = printer.name;
                        break;
                    }
                }

                if (printerName == "")
                throw "No LabelWriter printers found. Install LabelWriter printer";
                // print the label
                label.print(printerName, null, labelSet.toString());
            }
            catch(e)
            {
                alert(e.message || e);
            }
    }

【讨论】:

  • 请查看此网址:developers.dymo.com/2010/07/21/…
  • 我正在设置一个 XML 模板来打印我的 Dymo 标签。我认为它正在打印作为地址的条形码。如何设置它打印指定的值,例如可以传递给打印函数的 ID?
  • 你应该将该值传递到文本区域(这里:#labelPrint)
猜你喜欢
  • 2020-12-21
  • 2020-03-19
  • 2016-11-17
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-20
相关资源
最近更新 更多