Jun 022010
 

DYMO has just released a beta version of DYMO Label Framework – a new set of APIs to work with DYMO LabelWriter and LabelMANAGER printers. In this post we will briefly look at different parts of the Framework.

Installation

All needed libraries and binaries are installed by DYMO Label v.8 installer. On Windows you will need to install version 8.2.3.1026 or later available on http://download.dymo.com/download/Win/DLS8Setup.8.3.1.1332.exe http://www.labelwriter.com/software/dls/win/DLS8Setup.8.2.3.1026-BETA.exe. Note: THIS IS A BETA VERSION for developers only. Please don’t install it on customer’s machines.  On Mac DYMO Label version 8.2.2.1173 or later should be installed. It is available on http://www.labelwriter.com/software/dls/mac/DLS8Setup.8.2.2.1173.dmg. Documentation and samples are installed by DYMO Label SDK installer available on http://www.labelwriter.com/software/dls/win/DYMO_Label_v.8_SDK_Installer.exe.

APIs

The Framework supports the following environments: .NET, COM, and JavaScript. The .NET and COM APIs are similar to high-level and low-level SDK APIs in the current API. JavaScript is a new API to be used from a web-browser.

.NET

The Framework itself is almost completely written in C#, so .NET is “natively” supported. To start using it just reference DYMO.Label.Framework assembly. Below is a simple example shows how to print an address label.

var label = DYMO.Label.Framework.Label.Open(@“c:Address.label”);
label.SetObjectText(“Address”, “DYMOn828 San Pablo AvenAlbany CA 94706”);
label.Print(“DYMO LabelWriter 450 Turbo”);

A compete C# sample is available on DYMO Label Framework/samples/C# Sample subfolder of the SDK installation folder. A VB.NET sample is available on DYMO Label Framework/samples/VB Sample subfolder.

COM

Thanks to .NET-to-COM-interop, Framework can be used from any language/platform that supports COM, e.g. Visual C++, Delphi, or VB6. The API is similar to the .NET one. E.G. the above example in C++ will look like this:

#import “DYMOLabelFramework.tlb”
using namespace DYMO_Label_Framework;
IFrameworkPtr framework (__uuidof(Framework));
ILabelPtr label = framework->OpenLabel(L“c:\Address.label”);
label->SetObjectText(L”Address”, L“DYMOn828 San Pablo AvenAlbany CA 94706”);
IPrintParamsPtr printParams = abelWriterPrintParams(__uuidof(LabelWriterPrintParams));
label->Print(framework->GetPrinterByName(L”DYMO LabelWriter 450 Turbo”), printParams); 

JavaScript

Prior to the the introduction of the Framework API DYMO had limited support for accessing printers from web-browsers. Although major browsers (IE, Firefox, Safari on Mac) were supported, the burden of browsers’ incompatibility was on the developers side. That has changed now. Not only more browsers are supported now (IE, IE 64-bit, Firefox, Chrome, Opera, Safari on Windows, Safari on Mac) but the Framework provides a cross-browser and cross-platform pure JavaScript API. The above samples will look like this (in any supported browser):

$.get(http://myserver.com/Address.label, function(labelXml)
{
    var label = dymo.label.framework.openLabelXml(labelXml);
    label.setObjectText(“Address”, “DYMOn828 San Pablo AvenAlbany CA 94706”);
    label.print(“DYMO LabelWriter 450 Turbo”);
});

Note 1: using of jQuery library ($.get function) is just for this sample only. The Framework JavaScript library itself does not have dependencies on any other libraries.

Conclusion

DYMO Label Framework allows easy label printing in many different environments. The APIs provided by the Framework will be explored in more detail in upcoming posts.

  63 Responses to “DYMO Label Framework Overview”

  1. When are you going to release the live version?

  2. Can you post a complete workable VB ASP.Net sample, including the references to the DLLs that are needed in the project? I have tried referencing every DLL I could find and it still tells me that dymo.label doesn’t exist.

  3. Hi!

    If the NET-to-COM-interop actually is working, how does one set up the version 8 API/framework within VB6 or VBA?

    Please, I/we need some concise documention and examples. I don’t know C- code and I need to get this new ver. 8 DLS working in MS Access VBA.

    BTW, I have DLS 8.3.0.1242 installed and both the DYMO_Label_v.8_SDK_Installer [ver. 8.2.0.0] and the DYMO_Label_v.8_SDK_Installer.8.2.3.123-BETA [ver. 8.2.3.1027] installed on my Win 7 PC. Is there something else around that might elucidate the complete workings of the new ver. 8.3.xx DLS interface for VBA in detail?

    Thanks for your help & support!

    • IDymoTapeAddIn is not supported in DLS8. To print on a tape printer you have to use DYMO Label Framework API. Unfortunately there is almost zero documentation and samples for the COM part of the API. You could kind of deduct it the usage from the TLB file and .NET documentation available in BETA SDK in [My Documents]DYMO LabelSDKDYMO Label FrameworkdocDYMOLabelFramework.chm. I know, it is very limited, and I apologize for inconvenience. As for VBA sample, you can find a Access 2010 sample database here.

      • Thanks very much, Vladimir! You essentially solved my issues. This new 8.x DLS interface is sweet!

        I noticed that there is some skeletal info on the framework within the Object Browser in Access 2010. When can we expect to see more detailed documentation about how to invoke and work with the COM framework in VBA within Access? I can parrot the code (with some understanding) to get the job done, but it would be nice to be able to have a good understanding of exactly what is going on within the COM framework.

        Thanks, again!

        • Thanks.

          As for the documentation, there is no time-frame for the Framework COM API documentation. .NET will be updated soon. COM interface mimics .NET one as close as possible, so for now the best way is to use .NET documentation and the object browser to have an idea that is available. Sorry for inconvenience. If you have specific questions, just ask here on the blog, we will add a simple ‘how-to’ post.

  4. Hi! Once the labelset records have been created using the VBA code structure you provided, how can one print out the parameters stored in all of the labelset records?

    I see the ‘.AddTExt’ puts a text item into a record, but I don’t see any way to read the items out of each labelset record. I need to do that to debug my code before wasting tons of labels.

    Thanks for your help!

    • you can use LabelSetBuilder.Xml property to get xml representation of the whole label set.

      also, make sure to specify object names exactly as in the label files. They are case-sensitive, so ‘TEXT’ and ‘Text’ will refer to different objects. E.g. if in the label file the object’s reference name is ‘Text’, you should use something like

      record.SetText(“Text”, “Hello, World!”) but NOT

      record.SetText(“TEXT”, “Hello, World!”) or
      record.SetText(“text”, “Hello, World!”) or

  5. Vladimir:
    I have no issue with adding text to labels, it works fine; I checked it:
    Set LabelRecord = LabelSet.AddRecord()
    Call LabelRecord.AddText(“Warehouse”, strWarehaus)
    Call LabelRecord.AddText(“Shelf”, strLoc)

    Now let’s say I created 22 records of label variables. I want to be able to index into the records of created label text and extract the contents of each label text record and then print it:
    Dim dbs As Database, rst As LabelSet
    Set dbs = CurrentDb
    Dim ware, shelf as String
    Set rst = dbs.OpenRecordset(“–label data?-what goes here?-“) ‘Is ther an “OpenLabelSet” ?
    rst.MoveFirst
    Do While Not rst.EOF
    ware = rst.GetText(“Warehouse”)
    shelf = rst.GetText(“Shelf”)
    print ware, shelf
    rst.MoveNext
    Loop

    So this is what I want to do. Can you give me an example, please?
    Thanks!

    • LabelSet is not designed to be a universal data storage. It is designed to store data to be printed immideately. So, you populate it with the data you are going to print right away, not with ALL the data you can print sometime in the future. Because of that there is no way to retrieve or modify data in the data set. For a permanent storage you can use Access tables themselves.

  6. OK, so you can fill the LabelSet, but it cannot be read except via the PrintLabelSet method itself. Am I correct?

    My intention is to be able to see how many labels there were and to display their contents as a Debug.Print that would take the place of the actual PrintLabelSet for the tape printer. That way I don’t waste millions of dollars in tape media while debugging my main program. If I was going to make my own label print queue that would be deferred to sometime in the future, then I would use an Access table, but that is not my intention.

    It seems logical, IMHO, that this should be part of your framework. If Labelsets are supposed to be emulating Recordsets, I would expect to be able to write and read members of those records. But it looks like that is not the case.
    ——————-
    One more item of note: when I was finishing my code to print tape labels on the Duo, I had copied chunks of my code from the paper (upper) Barcode label sub. The one thing that I forgot to change was the label name when I fetched the XML label.
    The two variable names for the text fields I used on the tape label were completely different than the text fields defined in the XML for the Barcode label that I fetched. Yet, when I did an .AddText, it happily carried on with no error messages from the framework or the OS. When it got to the PrintLabelSet statement to actually print the labels, it did nothing and again no error messages were generated. Thankfully, it did not try to print reams of garbage. But why were no error messages generated when trying to print text fields using the wrong name realtive to the XML label file??
    —————————————————————————–

    Thanks again for your time & support!

  7. I need to beable to print to a network print using the above code.

    Works Perfect
    label.Print(“DYMO LabelWriter 450 Turbo”);

    But when I try to print to network printer
    label.Print(“\PC NAMEDYMO LabelWriter 450 Turbo”);

    It errors out saying it cant find the printer.

    Am I missing something or does it not support network printing?

    • Printing to a network printer is supported. The printer should be shared on the “Server” machine, and also added as a printer on the local machine (so, it is available in the printer list/ Devices and Printers panel). To make sure your local machine is configured properly, try to print using DYMO LAbel Software – if the printer is in th elist of printers, you will be able to print using the Framework as well. To get a list of available printers you can use getPrinters() method.

      • Yeap worked, turns out the networked PC didnt have the latest Dymo V8 installed. Thanks for fast response!

  8. I love Dymo printers. The API is awesome and worked great in 7, now with 8, the show() does not bring up the app.

    I can launch the app fine from the command prompt.

    I can load a label, populate it, and print it.
    Just not show() so they can lay it out.

    My code returns .null. from the show method.

    Using win7 on about 8 machines. Once 8 is installed it breaks it, even if 8 is removed.

    if oDymo.OPEN ( lcFileName)
    oDymoLabel.SetField ( ‘Text’, lcTxt)
    oDymoLabel.SetField ( ‘Side’, lcTxt)

    IF lnQty = 0
    lnRet = oDymo.SHOW() && preview the label

    INKEY(1)
    ELSE
    * This works!

    lnRet = oDymo.PRINT2( lnQty, .T., lnSide ) && 0 left, 1 right, 2 auto
    ENDIF
    ELSE
    msg(‘Dymo could not be opened’)
    endif

  9. Hi Vladimir.

    I have a Ruby on Rails app delivering the label definitions (asset.label, tag.label and parent.label) to the browser’s JS, and the framework is doing a great job rendering it. There is an addition I’d like to ask about. I want to be able to set an ImageObject’s URL in this same manner. Does it do that?

    Thanks for this excellent documentation on a very impressive JS framework!

    -Matthew

  10. Hi Vladimir, I’m trying to integrate your example into a web app I’ve been working on but when I run you code locally, it can’t find the Dymo printer. Your sample works and find the printer just fine. Any ideas what I could be missing?

  11. Can you post a complete workable C# ASP.Net sample, including the references to the DLLs that are needed in the project?

  12. I work with C# and got a new LabelWriter 450 Turbo. I am not able to use the Methods “getPrinters” and “getDymoPrinters”.
    I am using Windows 8 and also tried it with Windows 7, but the Methods are not Mentioned in the Dropdown menu, like you can see in the link.
    http://imageshack.us/photo/my-images/203/dymofehler.png/
    The background of this is, that I want to know if the installed Printer is online or not.
    Did i forgot a library or something?

    • Please make sure that you have latest DYMO Label Software (DLS) 8.5.0 running on your PC since the SDK comes with help information and sample code only.

  13. Good Morning,
    I’ve recentrly downloaded the SDK to work with a MSAccess2010 application and print labels on a LabelManager 450D (USB Connected)

    I’m getting some problems on the label.PRINT command
    I’m using the Framework library instead of the DLS. here’s my VBA code:
    Function DymoLabelPrint()
    On Error Resume Next

    Dim dymoLABEL As DYMO_Label_Framework.ILabel
    Dim dymoFRAME As DYMO_Label_Framework.IFramework

    Set dymoFRAME = New DYMO_Label_Framework.Framework
    Set dymoLABEL = dymoFRAME.OpenLabel(“D:\TEST_Layout.label”)
    Set dymoPRINT = dymoFRAME.Printers(0)
    ‘Set dymoPRINT = dymoFRAME.GetPrinterByName(“DYMO”)

    With dymoLABEL
    .SetObjectText “TESTO”, “INVIO PROVA DG”
    End With

    dymoLABEL.Print (dymoPRINT.Name)

    dymoLABEL = Nothing
    dymoFRAME = Nothing
    End Function

    everything is fine: label file is correctly loaded, changes to the Text object have been made correctly, but when I try to print I get 438 error (Method not supported) on the line dymoLABEL.PRINT
    Tried to change the parameters: .print(0) .print (“DYMO”) (tha’s is the printer name) but no success….
    How could I solve this?
    thanks to all

  14. Attempting to run any of the samples in a VB.Net example is not possible.
    In the Imports section I am able to define:

    Imports DYMO.Label.Framework

    But in the example that I am trying to follow, the lines referencing both OPEN and PRINT throw an error “Open is not a member of DYMO.Label.Framework”

    In the list of Project references (. net framework 4) for the .NET references there are none for DYMO listed. There are however COM references, but I cannot reference them.

    Please help me to undersatnd what is wrong.

    THANKS!

  15. I downloaded everything from dymo.com and the DYMO.Label.Framework.dll was not included…
    how do I get that .dll so I can reference it on my project?
    thanks

  16. I have a question. I have made work the SDK for Visual Basic (Using the 450 turbo). I need to print labels in which I use a barcode font, but I cannot get the printer to recognize that I am selecting a barcode font.

    Label.SetObjectText(ObjectNameCmb.Text, LabelTextBox.Text & Environment.NewLine & String.Format(“*” & TLine2.Text & “*”, New System.Drawing.Font(“Free 3 of 9 Extended”, 16)))

    that is not working. Can someone help me get it working? Is it a better way to declare what font I want to use on the printer?

  17. Hi,

    i want to print a DYMO label using delphi…
    i’ve downloaded the SDK but i don’t know what i have to do now…
    I’ve not found samples…

  18. DLS 8 SDK does not include Delphi samples. You can try using Delphi 7 samples from DLS 7 SDK. Or “convert” any other sample that uses Microsoft COM.

  19. Does anyone have a VB6 sample under the current DLS V8 and SDK V8?

  20. Are there any samples using asp.net C# for web forms. ?
    I cant seem to find them…I found the windows form one…

  21. One more question.
    on a asp.net c# web form, what code do I use to determine which label tray it prints out of on a LabelWriter 450 Twin Turbo.
    We use 2 different labels…2″X4″ and 1″X3″

    I created two different labels (names label_sm.label and label_lg.label)
    Both print to the large label

    Thanks
    Gary

  22. Hi,

    I want to print a DYMO label using Xojo on mac as well as on windows…
    I have ve downloaded the SDK but I do not know what I have to do now…
    Please help me to understand how to use Dymo label framework in xojo application

    Thanks

  23. Hi,
    In a .NET environment I’m using this, which works (almost) perfectly:

    var label = DYMO.Label.Framework.Label.Open(@“c:Address.label”);
    label.SetObjectText(“Address”, “DYMOn828 San Pablo AvenAlbany CA 94706”);
    label.Print(“DYMO LabelWriter 400”);

    But the label prints with a top margin before the first line that I can’t get rid of…

    When I use the same label model with DymoLabel it prints perfectly.

    I tried to find a solution changing the label (XML) model but did not suceed.
    Any ideas?

    Thanks!
    Rogerio

    • Hi Rogerio,

      Can you send some sample output and highlight the problem you are having? It would also help if you could send your project so I can try to reproduce the issue myself.

      Thanks,
      Jeff

  24. Hi,

    We are using the SDK with VB in Access and utilising the supplied sample data, we have come across an issue where 80% of people trying to use it are receiveing a prompt for the DYMOPrinting.dll. they do have this dll and they have the full version of the Dymo software installed locally. I have the exact same setup and mine is working no problems, and I don’t have the above mentioned dll instead I have DYMOPrintingSupport.dll. We have tried copying and registering this and it is still not working. Do you have any suggestions?

    Thanks
    Lynette

  25. Hello,

    Sorry for my English, it’s not my own language.

    I try to use the Dymo Framework in my MS Access application using a .label file but I can’t make it works.
    I used the “DymoLabelFramework.accdb” sample to help me but I always have an error at one point.

    I’ve added the Dymo Label Framework reference (file C:\Program Files (x86)\DYMO\DYMO Label Software\Framework\DYMO.Label.Framework.tlb)

    And here is my code :

    Dim Framework As DYMO_Label_Framework.IFramework
    Dim Printer As DYMO_Label_Framework.IPrinter

    Set Framework = CreateObject(“DYMO.Label.Framework”)
    Set Printer = Framework.GetPrinterByName(DymoPrinterName)

    If Printer.PrinterType = “LabelWriter” Then
    Dim DymoLabel As DYMO_Label_Framework.ILabel
    Set DymoLabel = Framework.OpenLabel(CurrentProject.Path & “\DymoBarcode.label”)

    DymoLabel.SetObjectText “BARCODE”, Me.TxtBarresCodes.Value
    DymoLabel.SetObjectText “TEXT”, “TEST”

    DymoLabel.Print Printer
    End If

    Everything is fine until the line “DymoLabel.Print Printer” where I have the following error :
    Error 438 : “Object Doesn’t Support This Property or Method”

    If I look inside the “DymoLabel” variable, I can see the 2 objects loaded and edited.

    What am I doing wrong ?

    Thanks.
    Christophe.

    • I have found a solution, I used the SDK instead of Framework…
      So I used the “DYMO_DLS_SDK” reference instead of “Dymo Label Framework” (C:\Program Files (x86)\DYMO\DYMO Label Software\DYMO.DLS.SDK.tlb) and done the following code and it’s working :

      Dim myDymo As DYMO_DLS_SDK.DymoHighLevelSDK
      Dim dyAddin As DYMO_DLS_SDK.ISDKDymoAddin
      Dim dyLabel As DYMO_DLS_SDK.ISDKDymoLabels

      Set myDymo = New DYMO_DLS_SDK.DymoHighLevelSDK

      Set dyAddin = myDymo.DymoAddin
      Set dyLabel = myDymo.DymoLabels

      Dim DymoPrinters As String
      Dim splittedDymoPrinters() As String
      DymoPrinters = dyAddin.GetDymoPrinters

      If DymoPrinters “” Then
      splittedDymoPrinters = Split(DymoPrinters, “|”)
      For i = 0 To UBound(splittedDymoPrinters)
      If DymoPrinterName = splittedDymoPrinters(i) Then
      dymoPrinterExist = True
      Exit For
      End If
      Next i
      End If

      If dymoPrinterExist Then

      dyAddin.SelectPrinter DymoPrinterName

      dyAddin.Open CurrentProject.Path & “\DymoBarcode.label”
      dyLabel.SetField “BARCODE”, Me.TxtBarresCodes.Value
      dyLabel.SetField “TEXT”, “TEST”
      dyAddin.Print2 1, True, 1

      Set myDymo = Nothing
      End If

      This may help other people…

      Bye.
      Christophe.

    • If you use the access sample as is (without modifications), does it work properly?

      Ron

      • Hello Ron,

        Yes, the access sample works without problem (without modification) but this sample doesn’t use a .label file so I had to modify it and it was not working.
        But if I use the SDK (see my previous message), it’s working.

        Bye.
        Chris.

  26. Hello,

    I’m using very simple code for my .NET application to print but I always have an error ‘Unable to load label template’, The element ‘DieCutLabel’ has invalid child element ‘IsOutlined’. List of possible elements expected: ‘PaperName, CustomPaper’

    My label file is generated by DYMO Label v.8 software(I have checked label file and saw that it perfectly normal.)
    Please help me to resolve this problem.

    More information:
    I’m using DYMO .NET Framework version 8.5.1.04 for my application and here is my code

    var label = Label.Open(“LargeAddressTestLabel.label”);
    label.SetObjectText(“lblFirstName”, firstName);
    label.SetObjectText(“lblLastName”, lastName);
    label.Print(“DYMO LabelWriter 450”);

    • It sounds like you have a mismatch in versions between the version of DLS you used to create the label and the DLS you are using in your SDK. I would recommend upgrading to the latest version and recreating your file. You should be able to use the file in the SDK after the upgrades.

      Ron

      • Is it mean that I should be update DYMO Label software to latest version?
        Is this the latest version I should install – https://www.labelvalue.com/dymo-software.php (seem be version 8.5.3 is latest version) ?

        • I have upgraded to DLS8Setup.8.5.3 and regenerated new label file to use for my app again, the old errors no longer appear but I got another bug: Unable to load label template ‘D:\Projects\SendEmail\BK\WD_Service_31082017\TestFunction\Images\template5.label’
          Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.

          I don’t know how to resolve all bugs to load the label file(seem be there are many bugs on your dll). Please quickly help me to resolve that bug.

          Thanks a lot.

Leave a Reply to altman Cancel reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)