Skip navigation
Robin West

Questions...And Appologies

Posted by Robin West Expert Feb 10, 2016

Hi everyone from the printing community.  The printing technologies pages have been very active and the printer ISV team is committed to engaging the community as much as possible.  Recently we noticed a drop in the number of questions being posted and and we didn't know why.  This morning we figured it out and found many of you were posting to our landing page and the technologies page where we were not watching.  We have fixed that now and we would like to apologize for not seeing your posts.  We will attempt to go back and answer when we can but we ask your patience as we go though the backlog.  If you have urgency, feel free to reply to your own post and let us know.

I've talked about different ways to print from webpages in multiple blogs in the past.  A great option to use if you are using multiple Zebra products is the Enterprise Browser.


Enterprise Browser is a powerful, next generation industrial browser that enables you to build feature-rich web applications that integrate seamlessly with the features in Zebra mobile computers and peripherals.


Enterprise Browser’s feature-rich mobile application development tool allows you to seamlessly integrate the browser into the native peripherals of a device, while enabling barcode scanning, signature capture, and much more.


Enterprise Browser replaces the Zebra Pocket Browser and RhoElements Shared Runtime.


Try this new sample code walk-through of using the printing capabilities and provide your feedback.


Printing Labels - Enterprise Browser - JavaScript

The Zebra Printer ISV team recognizes that our active developer community is growing.  You can generally rely on promptly getting some answers to your questions.   While the developer community is wonderful and helpful to each other, we recognize that you rely on answers from our team.  Unfortunately this week our entire team is in Las Vegas for our developer event, the APPFORUM.  We have not had the time to keep up with Launchpad posts this week and last week.  When we get back, we will attempt to get back to helping everyone on this site.  Sorry for the delay. 

Thanks for understanding, Robin

Robin West

Printer Page Update!

Posted by Robin West Expert Sep 15, 2015

Hi Everyone,

In addition to planning our sessions for the APPFORUMS, the printer ISV team has been hard at work on a complete redesign of the Launchpad printer page. To that end, we are planning a potential  service outage of  the site from Thursday Sept 17th at 5:00PM CST to 7:00PM CST.  This will only effect the Printers page.  Please do not attempt to post anything during this time.  After that, look forward to the new look and feel of the printer developer pages. 

A main reason for this update is the positive responses and high activity we've had.  We want to make the experience even better to direct your questions to people who may have similar questions or really know the answers.  We also want to make it easier to find our sample code and repository of articles on many technology topics.  We've had this repository of sample code available to just our partners for some time, but now we are slowly opening it up to the full developer community.  Along with that we have reorganized topics to make it easier to find the information you care about.


I hope you like the new site, but we welcome feedback if you don't

Robin West

Solution Architect

Due to a lot of recent questions about my blog on Http POST printing, I'm posting this notification about CORS. I've been doing a lot of research and testing to try and figure out how and why many people are having issues printing using the Javascript I posted.  Specifically they are getting an error from their browsers "Access-Control-Allow-Origin header not found".  This is a HTTP header element that the third party server (in this case the printer) needs to respond with in order for the browser to know it's OK to call on it if the originating web-server is different.  This security feature is called CORS.  On PC's, most browsers are throwing the error in the console, but still allowing the communication through to the printerThe browsers on OSx machines and Apple products in general are blocking the communications due to this security restriction.  I'm sorry to say I missed this in my testing of the sample code.


CORS is a fairly recent security standard. We are exploring our options for handling it. If you are having a specific use case where this seems to be a problem, please comment below or email me directly.  Please make sure to mention the OS, browser, and printer models you are using.  This is so Zebra can correctly prioritize this issue.


There are several ways around the problem.  If your website is local to the browsers and printers it will be serving, you can (as posted in a comment from Jan Schinacher to my original post) take the ip address and, on the server, open a TCP socket or Telnet session to port 9100 or 6101 and send the data directly to the printer.  This is my recommended option for local sites as it allows full bi-directional communication (you can check if the printer is in a good state to print).  If the site is hosted elsewhere, there are still a couple of options as I've mentioned in earlier posts.  You can create a Zebra Weblink server for your webserver.  You can create a browser extension. The security is less tight, so most of them I've found will allow the communication through.   If the issue is found on Zebra mobile devices (as in MC75A, or TC55) then you can use our new Enterprise Browser with it's built in printing API's.  Other mobile devices will likely need an app to handle the printing communications.  We have a partner, Arrowhead, that makes a nice iOS app called MobiPrint


I hope this helps, and again my apologies for posting code that does not work for everyone.  I'm going to leave it up as it still is useful many developers for now.


Robin West

Solution Architect

Zebra ISV and Global Partners Technical


Hi Everyone –I’m super excited about the Zebra APPFORUMs this year. This is the first time Zebra has hosted developer conferences globally. As part of the Printer ISV team, I can’t wait to meet many of the developers we’ve worked with over the years. I’m especially looking forward to meeting those cutting edge iOS and Android developers who take on the challenge of developing for enterprise customers.

There are several posts from one of my favorite colleagues, Ritesh Gupta, on Top 5 Reasons to Attend and Loosening the Company’s Purse Strings. These are great resources to help get your company on board with sending you to the APPFORUM. I wanted to take this opportunity to talk about why I think developers should want to attend the North and Latin Americas APPFORUM.

Vegas! – A couple of days in the sun in late September is just what the doctor ordered. The Hard Rock Hotel has the best pools in Las Vegas, not to mention the great dining and entertainment options. Plus we pulled some strings and got you a killer rate to stay (a ridiculously low $84/night as long as you book before Aug 31st).

Print Money! – We know there is far more money to be made in Enterprise development than writing consumer apps. (State of the Developer Nation) We can help get you started with development tips and tricks for creating top enterprise applications. As the leader in the Enterprise Mobility space, we have a number of Lightning Talks to discuss specific technologies and industry trends to help you focus your app development efforts.

Be Innovative! – Show your colleagues how great a developer you are with the best Hackathon entry. Play with all the latest technologies from new Android devices and lightweight mobile printers, to BLE beacons and IoT platforms. Find new ways to combine technologies to meet your customer needs.

Learn! – If you are new to Enterprise Asset Intelligence or followed Symbol and Zebra for decades, we have something to share. Zebra is rapidly innovating and creating new software tools for our development community. Learn how to develop an app for any platform. We will have developers available to answer questions throughout the days as well as the Workshops and Lightning Talks.

Connect! – Not only top leaders at Zebra, but developers from around the world are already signed up to attend. Hang out at the café, or by the pool. You never know what innovator is sitting right next to you.

Vegas! – Do I really need to say more?

P.S. If you’re not in the Americas, the EMEA APPFORUM is in London in October. I’ll see you there as well!

As always, you can contact me or the Zebra Printer ISV Technical Team on our Launchpad site.

Robin West

Solution Architect - Zebra Technologies

Robin West

PDF Printing

Posted by Robin West Expert May 18, 2015

Zebra has regularly heard feedback from the developer community about your mobile and web based applications that output PDF reports, documents and shipping labels for printing. The standard label printer is unable to directly process PDF formatted documents, without requiring middleware software to convert PDFs into formats the printer can understand. This adds additional challenges for developers and customers.

Zebra Development Services provides solutions that enable your business to keep up with the growing demand for devices that are mobile, intelligent and connected to the cloud. We've heard you and we've created an on-printer application that allows Link-OS printers to directly receive and print PDFs without requiring conversion or middleware.

For more information, read the attachment in the linked post to understand how applications are now able to send PDF documents directly to Link-OS printers.  Zebra Technologies - PDF Printing through Link-OS PDF Virtual Device

A full sample code application using PDF Virtual Device for Zebra Printers can be found here.

Good Afternoon Developers!  Today I’m continuing my discussion of printing from webpages.  For my first post, see here


Another option for networked printers is using HTTP POST to send raw print data directly to the printer.  This can be done in Javascript to print locally from any HTML webpage to most Zebra printers.  It allows greater flexibility to set up things like size, margins, and print darkness printed by the website developers as opposed to users.  The only thing needed from the user is the local printer IP address.  The printer IP could be set up once and saved to minimize end user interaction.


Thankfully with http you can print from a mobile device, smartphone, tablet, or PC.   No drivers are necessary, so Android devices without drivers can use this to print. No one has to install or run any software besides a browser.  All this makes it very flexible to the devices your web app can be run on.


There are several limitations for this mode of printing. One is that you as a developer have to create the label yourself.  Zebra printers primarily use a print language called ZPL.  Normally the driver handles the conversion from document to print language. Another is some of the browser security settings block communicating to the printer. The third limitation is that there is no bi-directional capability.  There is no way to verify if a printer is online or is capable of printing before or after sending a print job.  Use this feature only in situations where it is not critical that the print job gets done, or you can easily reprint if the printer was off or out of paper.  Another limitation with http printing is that the printer must be networked on the same network as the user.  USB and Bluetooth connectivity are not options with this technology.


The easiest way to handle creating a print job is to install the Zebra Driver and set it up for how you want the labels to be printed.  Then take a label design tool like Zebra Designer to create a reusable document format.   If you are printing in a specific application, say shelf labels, most of the time you want the price always in one area of the label, and the UPC in another area.  You can use Zebra Designer to lay this template out.  When you want to print, you just send the basic information of the UPC and price for each label.  This speeds up time to print and ensures the best quality images.  You can also manipulate the ZPL directly as a simple text file.  The Programming Guide has examples of how to do this.  It also explains how to set up printers for Wi-Fi, as well as document formatting.


Don’t worry, most Zebra printers are set up to accept this type of communication by default, so no setup is really necessary.  There are two html documents attached.  One of them is a single page, very basic document showing the exact Javascript needed to print.  The other page, with associated documents, is more complicated, but shows multiple ways of handling printing from a webpage and includes several types of documents to print. 

  1. Name badge demo: Shows how to take basic user input and embed it directly in a raw ZPL print string and print it.
  2. Type your own ZPL Script: Essentially the same as the other basic html page, take what’s in the textbox and send it as raw data to the printer.
  3. Print Configuration Label: Simple string to print status and setup information about the printer
  4. Print Zebra Demo labels: Shows how to take document templates residing on a server, send them to the printer to be stored, then read them within javascript and pull out variable fields where user input is needed, and display those fields. When the user has done entering their data, they can then hit a print button to print it.
  5. Print Labels from your Computer: Does the same thing as demo #4, but gets the templates from the local user’s PC instead of the server.

For the demos that print formats, there are two different types of formats, standard ZPL, and XML. XML printing is useful if data is already formatted in XML, say from a database.

The files that are in this Zip file are:

  1. Basic_HttpPOST.html: A very basic webpage with embedded javascript showing the script to print directly to a Zebra printer.
  2. HTTPPost_printing.html: A more advanced webpage with embedded javascript showing several demos.
  3. ZCloudDemo.css: A standard css to make the webpage look nice and Zebra-ish.
  4. Cloud_Connect.png, Zebra_Tag_Horizontal.png, and icon.ico: images to make the page look nice and Zebra-ish.
  5. File_catalog.xml: used by the “Print Zebra Demo labels” functionality to provide a list of zpl files for users to choose from (without a PHP or ASP backend)
  6. Test.txt, test2.txt, and herbert2.txt: basic ZPL print format files used by the “Print Zebra Demo labels” demo.


  To try it yourself, simply extract the zip folder anywhere on your computer and double click the HTTPPost_printing.html file.  This will open your favorite internet browser.  You will need to input the IP address of your Zebra printer, then you should be ready to print.  If you are using Chrome or IE10+, the “Print Zebra Demo labels” demo won’t work unless you are running it from IIS.


Edit: If you are having a problem with print-jobs not going through, check the console log.  If you see an error along the lines of "Access-Control-Allow-Origin header not found", please see my post Http POST printing and CORS.


For more information, see the Zebra Knowledge Management site.

To ask questions, see our Launchpad page.


Other Articles on this topic:

Printing from Websites part 1

Printing From Websites Part 3


Zebra Web Printing Solutions


Robin West

ISV Engineer - Zebra Technologies

Hi Everyone, I’m back with another installment of Printing for Dummies.   Week after week we get questions about how to print data from a webpage to a local printer.  Over the course of time, we've come up with a number of solutions and I thought I would take the opportunity to share them.


I’m not talking about printing the actual html page.  You can do that, but most people just use the built-in browser printing function to a regular office printer.  I’m talking about doing things like printing a shipping label based on form data on the website, inventory tags, or receipts.  Understanding your options is especially useful if you are expecting your webpages to be viewed by many different devices (ex. PC’s, tablets, mobile computers).


In this series of blog posts, I’ll talk about several printing options.  Based on your use case, likely only one of them will be useful to you.  In this post, I’ll talk about printing through print drivers.  The next post, I’ll talk about printing directly through Javascript ( HTTP POST ).  After that I’ll discuss some hybrid options.  If you want to know how to print from your webserver, I have a blog post here talking about Zebra’s capabilities.


If your web application is designed to primarily be used on PC’s and you are not sure what type of printer will be used to print the labels, the easiest way to print is using the built in printing function in most modern browsers.  Developers have two main options for this.  You can present the label or receipt as a regular webpage in HTML.  Some developers find it easier to create the document on the webserver as a pdf and present that to the customer.  The customer then has to click the browser or Adobe® print function to send the page to a driver. 


The benefits to driver based printing are that it is the standard technology for printing.  Also, you do not need to deal with vendor-specific print languages.  Most customers know how to use it and most web development is done using this method for printing.  The printers can be USB connected or networked to the user’s PC.


The downsides when printing via drivers are many.  Much of the printer setup is completely out of the developers control.  Drivers are set up by the users so it is highly possible that printouts may vary due to driver configurations.  Also most modern browsers have a virtual print driver which ends up doing some pre-formatting, then sends the document to a regular driver.  This complexity could also cause the printouts to differ for each user.  This may not be an issue for printing your Amazon® wish list on 8.5” x 11” paper, but it is when you are printing something like a small compliance label. 


Another issue is that a proper driver must be installed on the user’s PC.  Windows has generic drivers, but many times these are not useful with specialty or thermal printers. It is highly recommended that users download and use the newest Zebra Drivers for their printers.  Sometimes customers are not willing or able to install any software (including drivers) on their workstations due to lack of Administrator privileges.  Drivers are also only really highly available on PC’s.  If the website is viewed on a mobile device, drivers generally do not exist.   Even in the Enterprise space, operations are being converted more and more to mobile. 


In the end, printing from a website with a driver is good in specific situations, but is not useful in some applications.  In future posts I will outline Zebra’s answers for these issues.


For more information, see the Zebra Knowledge Management site.

To ask questions, see our Launchpad page.


Robin West

ISV Engineer - Zebra Technologies

Robin West

Zatar Blogs

Posted by Robin West Expert Sep 22, 2014

Hi Everyone,


I've just re-posted several blog posts from the Zebra Zatar team.  They have their own sub-space on launchpad so you can direct IoT and M2M related questions there. 


These posts are from the Zatar developers (we call them Zatarians) talking about what the Internet of Things is and what the future has in store. You can find out even more information by going to their website at

Robin West

Zebra at the APPFORUM!

Posted by Robin West Expert Aug 22, 2014

I am really excited to attend the Motorola NA APPFORUM this year. I’ve been going for the last 3 years and it’s always interesting to see all the different software being created for enterprise customers.  Because Zebra is the Platinum sponsor this year, I get to have even more interaction at all levels of the conference.  Zebra’s longstanding partnership with Motorola has enhanced our ability to serve the developer community.  I believe we are in the midst of many changes in how things are developed and what they are developed for.


The concept of the Internet of Things (IoT) has been discussed for the last few years, and Zebra has been pleased to add our leadership to the conversation.  Phil Gerskovich, Zebra SVP and respected expert on IoT, will be giving a keynote speech at the App Forum event.


The Internet of Things in the enterprise is all about giving a digital voice to everyday things.  This has been Zebra’s main focus for many years. The ability to give a digital presence to a physical object is in our blood so to speak.


Barcoding and RFID is an integral part of IoT.  The partnership of Zebra and Motorola provides two halves of the equation.  When you ship a pair of shoes to your sister, you can get updates on exactly where it is at nearly any time from a website.  This is barcode based IoT in action. Retailers can find exactly how many size 8 jeans are on the shelf at anytime from anywhere.  RFID technology has come to the point where they are reliably doing just that. 


Zebra is also a leader in bringing IoT to devices of all types.  These can be anything from sensors and readers, to digital displays and lighting.    This new platform, called Zatar, will provide you, as developers, ways to connect, control, create, and collaborate with devices from the cloud. 


We recently announced our involvement with the NFL to provide technology for real time, next gen statistics on players on the field using active RFID technology.  This technology has been in the works for over 15 years in manufacturing and supply chain.  Still, active RFID is in its infancy and we know we have only just hit the tip of the iceberg on what could be possible.


I’m hoping this year that we have the opportunity to share and spark ideas for new ways to use technology to solve real customer problems.

Robin West

Zebra Sports?

Posted by Robin West Expert Aug 1, 2014

Yes, I said Sports... As in the NFL.

I can understand any confusion you might have.  When I first heard about this, I thought, What does printing and bar codes have to do with sports other than tickets and hot dog receipts?  The answer is really not about printing though.  Its about one of the other technologies enabled by Zebra, our real time, active RFID solutions.


Zebra Technologies announced our selection by the NFL to bring next generation statistics to the football field.  The NFL will install Zebra's Sports Solution in 17 stadiums during the 2014 NFL season. Players across the league will now be equipped with real time locating systems (RTLS) technology to improve the fan experience.

I'm really exited about it, not because I'm a super sports fan, but because of the innovation.  Accurately visualizing movement of items, in manufacturing for instance, is one thing.  Being able to apply that to fast moving people is another.  The press on this has been very good at describing some of the possibilities, from broadcast visualizations to coaching data.  I have hopes that it can be used to improve some of my favorite sports, teams, and players.  I'm also thinking of other ways this type of technology could be used.


I'd love to hear what you think.

For more information, visit the Zebra site:



Real time data just got real cool! @NFL teams with @ZebraTechnology to bring next gen stats to the field -  myemployer motionmatters

When people think of remote device management (RDM), they don’t think about printers much.  Many companies use RDM to manage their secure data on employee mobile phones.  They use these systems to remotely wipe data if an employee leaves, or it’s stolen. They also use them to update applications, content, connectivity settings, view statuses, and troubleshoot issues.


So what does this have to do with printers?  Many people don’t realize that many printers are as smart as your average smart phone.  Some may be even on par with your average desktop computer.  They are often more expensive.  Printers are no longer just output devices.  Some have true operating systems like Android or QNX.  They can store files like fonts, pictures, and print templates.  They can alert users to problems, and be configured for any number of connectivity situations.


Wireless and data security isn't usually an issue with printers, but other device management functionality is very relevant.    When dealing with large and/or widespread deployments, being able to update settings, files and OS remotely can be very important.   Remote troubleshooting and verification can be a real cost saver for customers.  Companies that don’t think about deployment and updates spend much more time and money handling these issues than those that have planned for it upfront.  Zebra has several tools as well as plugins for some major MDM software providers.  These can be found on the Zebra Link-OS website.   


As a developer, I encourage you to think about these things when creating your apps.  You should always check if a printer is ready to print before sending your print job.  You can use the stored file system to pre-load pictures and fonts to really customize the print out.  Storing these files also speeds up the time to print.   You should also consider the possible need to verify the printer is set up properly to work with your app.  If you stop to consider the printer as just another device, and treat it that way, you can make your customer experience seamless. 


As always, please ask questions on the Zebra Launchpad page or Zebra’s Knowledge Management site.

Robin West

Integration Architect

Robin West

RhoElements APD Printing

Posted by Robin West Expert Aug 22, 2013

In a few weeks I'll go into detail about how to print using the RhoMobile suite to Zebra printers. Until then, I thought I would bring up printing with the RhoElements runtime and APD.  There is a good amount of documentation out there for this, but I thought I could add some updates and it occurred to me that a good basic example would be useful.


The RhoElements runtime comes with a basic printer driver built into the web-kit DOM.  This driver is called the Adaptive Print Driver(APD). As this driver is designed for printing, it is not bi-directional and can only send data.  You can specify the APD to use Bluetooth or a network connection. The APD handles everything else for the connection including Bluetooth pairing.


While we recommend using a communication method that is bi-directional, these methods require more effort on the part of the developer.  The benefit is being able to check status of the printer and make sure it is ready to print. If the printed output is a critical part of your app, please check out the documentation for Bluetooth here.  With networked printers you can create a websocket server to handle printing.  I may post another blog on that later.  Otherwise using the APD is fast and easy.


Definitely familiarize yourself with the APD documentation available.  I will just add some caveats and tips.  The documentation says to scan the Printer ID label on the printer, but most printers don't come with this label.  You can create one based on the Printer Type Codes reference, but this isn't necessary.  The documentation here doesn’t have the most recent Zebra printer models.  If you have a hard time finding your printer on the list no worries.  You can use any 3 character code that makes sense to you.  I usually use Z40 as the ID for my ZPL printers (QLn, GX, RP4T, etc.) I change to Z41 - Z49 for printers with differing print widths or ones that need different ZPL templates. For CPCL printers (RW, MZ, QL+, etc,) I start with C60.


The second step, as the documentation suggests, is to create your print job or label. The documentation recommends using a Zebra software tool named Label Vista, but this is an older product. We recommend to now use ZebraDesigner.  Follow the documentation in the product to create and test your printouts to make sure they look the way you want.  Export this label to a text file so you can manipulate it later.  If you plan to let users pick from multiple printers and print widths, you may need to create several files for each printer type.  You may also want to reference the programming manuals to create and manipulate files directly. 


There are three primary ways to print using the APD.  The techniques you use will vary depending on what you are trying to print and what printer(s) your users may be using.  I recommend using a blend of these techniques to fit your needs.

The first is to send the print data directly to the printer.  This can be useful if you know what type of printer your users will be using or if you want to print variable length receipts because you can manipulate the data at runtime. 


The second is to use stored formats.  Basically this means that you create a label with positioning and font information and send it to the printer to be saved with variable fields.  You then fill in those fields when you want to print. This can be very useful if you want to reduce the amount of data you send to the printers.  This is also the best way to send image files to the printer. 


The third way is to use templates.  These are explained in the APD documentation.  They are useful if you want to give your users plenty of options on what printer to use. 


The attached demo shows a blend of techniques used to create a line busting customer receipt.  For size sake, I'm only putting in the code for a ZPL printer (I'm testing with a QLn220).  If you want to test it yourself, put the LOGO.Z40 file in the APD/Formats folder and the CUST.Z40 file in the APD/Template folder.  Printing will happen in three steps.  The logo will be pre-saved onto the printer as a format. Some header information will be populated with a template.  Lastly the items will be printed one line at a time directly.


Please let me know if you find this demo helpful and what type of content you would like to see in the future.

Robin West\ISV

Robin West

Cloud Connectivity

Posted by Robin West Expert Jul 30, 2013

I've talked a little bit about why the Visible Value Chain, providing visibility to a company’s assets, is so important when designing enterprise apps.  Zebra helps enable this by providing item and transaction level tracking.  This is great, but if you can't aggregate it, analyze the data, and provide meaningful actions based on it, it is just data. 


The topic I want to discuss today is cloud connectivity.  I know it's boring and not a printer specific topic, but it's important for anyone writing applications.  I've written a number of database based applications to aggregate and distribute data to multiple users, but they have primarily been internal applications. Recently, one of them needed to be accessed to someone outside our intranet, and I found I had to learn again what the internet was all about and what it's turning into (as well as security, web development, etc). 


Those of you who have long experience with web development are probably sniggering behind your hands right now.  For most of my working life, I've written software for hardware that has had little internet capability.  I'm not talking about networking, we've got a long history of strength there, but true cloud connectivity is very recent for us.  So my understanding of cloud software has been limited. 


With some of Zebra's most recent printer and firmware releases, we've added cloud connectivity.  We've done this through websockets that allow our devices to automatically connect to cloud or locally based servers.  Websockets are a newer standard communication protocol to enable client-server communications.  It is integrated into HTML5 javascript.  We've also created a server-side SDK to make it easy to communicate that way. 


If you are wondering why you should care, think about this.  Most web apps that need to print use the local drivers on the user's local computer.  If you are in an enterprise situation though this is not always ideal. The other option uses a Bluetooth application on a handheld computer, tablet, or smartphone.  This again is problematic and causes more work as you have to integrate printing in the app for whatever OS your customer is using. What if you need to send information to a device that is not in your local location?  What if you want to have the server decide where to print, rather than the user?


There are several tools out there but most are not designed to integrate well with enterprise cloud software.  The Zebra Link-OS SDK allows you to update or create apps in the cloud that can check status, send files or print jobs, and discover Link-OS printers, even if they are on different networks entirely.


  This is just one more step towards having a more interconnected world.  When the everyday devices like printers can connect to the cloud and tell you their status, it brings your customers that much more visibility. 

Filter Blog

By date:
By tag: