我正在使用dymo打印机,这是他们提供的代码,以启用网络打印。我已经编辑了它有3个文本框,以便我可以打印3个标签一次。我的问题是:当我按下“打印”按钮时,它只打印第一个文本框。
我需要的是打印所有三个测试盒。另外,如果可以编辑代码,那么如果其中一个框为空,脚本将跳过该框,而只打印其中包含文本的文本框。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Print a Label</title>
<script src = "http://labelwriter.com/software/dls/sdk/js/DYMO.Label.Framework.latest.js" type="text/javascript" charset="UTF-8"> </script>
<script src = "PrintLabel.js" type="text/javascript" charset="UTF-8"> </script>
</head>
<body>
<h1>DYMO Label Framework JavaScript Library Samples: Print Label test 2</h1>
<table>
<tr>
<td><p>
<div id="textDiv">
<label for="textTextArea">Label text:</label><br/>
<textarea name="textTextArea" id="textTextArea" rows='5' cols='40'></textarea>
</div>
</p></td>
<td><p>
<div id="textDiv">
<label for="textTextArea">Label text:</label><br/>
<textarea name="textTextArea" id="textTextArea" rows='5' cols='40'></textarea>
</div>
</p></td>
<td><p>
<div id="textDiv">
<label for="textTextArea">Label text:</label><br/>
<textarea name="textTextArea" id="textTextArea" rows='5' cols='40'></textarea>
</div>
</p></td>
</tr>
</table>
<div id="printDiv">
<button id="printButton">Print</button>
</div>
</body>
</html>对不起,这是PrintLable.js
//----------------------------------------------------------------------------
//
// $Id: PreviewAndPrintLabel.js 11419 2010-04-07 21:18:22Z vbuzuev $
//
// Project -------------------------------------------------------------------
//
// DYMO Label Framework
//
// Content -------------------------------------------------------------------
//
// DYMO Label Framework JavaScript Library Samples: Print label
//
//----------------------------------------------------------------------------
//
// Copyright (c), 2010, Sanford, L.P. All Rights Reserved.
//
//----------------------------------------------------------------------------
(function()
{
// called when the document completly loaded
function onload()
{
var textTextArea = document.getElementById('textTextArea');
var printButton = document.getElementById('printButton');
// prints the label
printButton.onclick = function()
{
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>Left</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);
// set label text
label.setObjectText("Text", textTextArea.value);
// select printer to print on
// for simplicity sake just use the first LabelWriter printer
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";
// finally print the label
label.print(printerName);
}
catch(e)
{
alert(e.message || e);
}
}
};
// register onload event
if (window.addEventListener)
window.addEventListener("load", onload, false);
else if (window.attachEvent)
window.attachEvent("onload", onload);
else
window.onload = onload;
} ());发布于 2014-10-03 13:20:14
您需要按照以下代码创建一些javascript函数。
var process_labels = function(label_DOM_element){
var textTextArea = label_DOM_element.getElementById('textTextArea');
print_label(textTextArea);
}然后,您将需要将标签JS更改为触发器,而不是在车身负载上加载的函数。另外,您还需要允许传入对角。
所以而不是
// prints the label printButton.onclick = function()
将此更改为模拟函数,以:
var print_label = function(textTextArea){
{
// 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>Left</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>';
ETC ETC...
}我不会为您写出全部内容,但基本上,您将有一个按钮单击函数,它将检查“textDiv”的所有元素,并将每个元素传递到process_label函数中。
这里涉及到一些工作,但是您的javascrtipt目前只需要一个元素,因此您需要创建一个可以按需调用的函数。
发布于 2014-11-07 06:24:29
这是我打印多个标签的代码。我已经为你的帮助补充了意见。请仔细看一下,如果你有任何疑问,请问我。我不能包括我的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, "&"], [/</g, "<"], [/>/g, ">"], [/"/g, """]];
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);
}
}https://stackoverflow.com/questions/26176511
复制相似问题