World Library  
Flag as Inappropriate
Email this Article

Thermal paper

Article Id: WHEBN0009178866
Reproduction Date:

Title: Thermal paper  
Author: World Heritage Encyclopedia
Language: English
Subject: Paper, Ultrasonic foil (papermaking), Oatmeal paper, Seed paper, Fishpaper
Collection:
Publisher: World Heritage Encyclopedia
Publication
Date:
 

Thermal paper

A ticket printed on thermal paper. A heat source near the paper will color the paper.
Paper roll for thermal fax machine.

Thermal paper is a special fine paper that is coated with a chemical that changes color when exposed to heat. It is used in thermal printers and particularly in inexpensive or lightweight devices such as adding machines, cash registers, and credit card terminals.

The surface of the paper is coated with a solid-state mixture of a dye and a suitable matrix; a combination of a fluoran leuco dye as an example. When the matrix is heated above its melting point, the dye reacts with the acid, shifts to its colored form, and the changed form is then conserved in a metastable state when the matrix solidifies back quickly enough.

Usually, the coating will turn black when heated, but coatings that turn blue or red are sometimes used. While an open heat source, such as a flame, can discolor the paper, a fingernail swiped quickly across the paper will also generate enough heat from friction to produce a mark.

Multicolor thermal paper first became available in the early 1990s with the introduction of the Fuji Thermo-Autochrome (TA) system.[1] This was followed in the early 2000s by the development of the Polaroid "zero-ink" (ZINK) system.[2] Both of these methods rely on multi-layer coatings with three separate colorizing layers, but different methods are used for independent activation of each layer.

History

The earliest direct thermal papers were developed by NCR Corporation (using dye chemistry) and 3M (using metallic salts). The NCR technology became the market leader over time, although the image would fade rather rapidly compared with the much more expensive, but durable 3M technology.

Texas Instruments invented the thermal print head in 1965, and the Silent 700, a computer terminal with a thermal printer, was released in the market in 1969. The Silent 700 was the first thermal print system that printed on thermal paper. During the 1970s, Hewlett-Packard integrated thermal paper printers into the design of its HP9800 series desktop computers, and integrated it into the top of the 2600-series CRT terminals as well as in plotters.

In the 1970s and early 1980s, Japanese producers (such as Ricoh, Jujo, and Kanzaki), using similar dye-based chemistry, formed partnerships with barcode printer manufacturers (such as TEC, Sato, and others) and entered the emerging global bar code industry, primarily in supermarkets. U.S. producers such as Appleton (NCR's licensee), Nashua Corporation, Graphic Controls, and others fought to gain market share. Leading pressure-sensitive label producers such as Avery Dennison became major consumers of direct thermal paper for label applications.

In the late 1980s and early 1990s, thermal transfer, laser printing, electrophotography, and, to a lesser extent, ink jet printing began to take away industrial and warehouse barcode applications due to better durability. Direct thermal made a strong comeback with point of sale receipts (gasoline pumps, cash registers, rental car receipts, etc.).

During 1998, Nintendo used thermal paper technology for their Game Boy Printer.

In 2006, NCR Corporation's Systemedia division introduced two-sided thermal printing technology, called "2ST"

Chemistry

Four different types of imaging chemicals are used in thermally sensitive papers: leuco dyes, developers, sensitizers and stabilizers.[3]

Leuco Dyes

The leuco dyes used in direct thermal paper are usually triaryl methane phthalide dyes, such as Yamamoto Blue 4450, or fluoran dyes, such as Pergascript Black 2C. A third widely used leuco dye is Crystal Violet lactone. Red or magenta color can be achieved with dyes such as Yamamoto Red 40. Yellow can be produced by the protonation of a triaryl pyridine, such as Copikem Yellow 37. These dyes have a colorless leuco form when crystalline or when in a pH neutral environment, but become colored when dissolved in a melt and exposed to an acidic environment.

Developers

Leuco dyes, in general, provide little color when melted unless they are melted in conjunction with one or more organic acids. Examples of organic acids suitable for thermochromic papers are phenols such as Bisphenol A (BPA) and Bisphenol S (BPS). Other suitable acidic materials are sulfonyl ureas such as BTUM and Pergafast 201. Zinc salts of substituted salicylic acids, such as zinc di-tert-butylsalicylate have also been commercially used as developers.

Sensitizers

A leuco dye and a developer, when melted together, are enough to produce color. However, the thermal threshold of the coated layer containing the colorizing components is determined by the lowest melting component of the layer. Furthermore, developers and leuco dyes often mix poorly upon melting. To optimize the colorization temperature and to facilitate mixing, a third chemical called a sensitizer is commonly added to the imaging layer. Sensitizers are commonly simple ether molecules such as 1,2-bis-(3-methylphenoxy)ethane or 2-benzyloxynapthalene. These two materials melt at approximately 100C, which is a practical lower limit for thermal coloration. These low-cost ethers are excellent low viscosity solvents for leuco dyes and developers, and this facilitates color formation at a well-defined temperature and with minimum energy input.

Stabilizers

Dyes in thermally sensitive paper are often unstable and return to their original colorless, crystalline forms when stored in hot or humid conditions. To stabilize the metastable glass formed by the leuco dye, developer and sensitizer, a fourth type of material called a stabilizer is often added to thermal papers. Stabilizers often share similarities with developers and are often complex multifunctional phenols that inhibit recrystallization of the dye and developer, thereby stabilizing the printed image.

Protective coating

Most direct thermal papers require a protective top-coating to:

  • reduce fading of the thermal image caused by exposure to UV light, water, oils, grease, lard, fats, plasticizers, and similar causes
  • provide improved print head wear
  • reduce or eliminate residue from the thermal coating on the thermal print heads
  • provide better anchorage of flexographic printing inks applied to the thermal paper
  • focus the heat from the thermal print head on the active coating.

Health and environmental concerns

Some thermal papers are coated with BPA, a chemical considered to be an endocrine disruptor.[4][5] This material can contaminate recycled paper.[6][7] BPA can transfer readily to the skin in small amounts:

When taking hold of a receipt consisting of thermal printing paper for five seconds, roughly 1 μg BPA (0.2–0.6 μg) was transferred to the forefinger and the middle finger if the skin was rather dry, and about ten times more than this if these fingers were wet or very greasy. Exposure to a person who repeatedly touches thermal printer paper for about ten hours per day, such as at a cash register, could reach 71 micrograms per day, which is 42 times less than the present tolerable daily intake (TDI).[8]

The chemical bisphenol A (BPA) is used for thermal paper coatings because of its stability and heat-resistance. This allows inkless printing for receipts from cash registers. People who often get in contact with BPA coated receipts do have a higher level of BPA in their bodies than people with average contact. Therefore, the New York Suffolk County signed a resolution to ban BPA in thermal receipt papers. Violation of this new law, the "Safer Sales Slip Act", involves a 500 USD penalty. One year after having been filed in the Office of the State Secretary, the new law will come into force.require('Module:No globals')

local p = {}

-- articles in which traditional Chinese preceeds simplified Chinese local t1st = { ["228 Incident"] = true, ["Chinese calendar"] = true, ["Lippo Centre, Hong Kong"] = true, ["Republic of China"] = true, ["Republic of China at the 1924 Summer Olympics"] = true, ["Taiwan"] = true, ["Taiwan (island)"] = true, ["Taiwan Province"] = true, ["Wei Boyang"] = true, }

-- the labels for each part local labels = { ["c"] = "Chinese", ["s"] = "simplified Chinese", ["t"] = "traditional Chinese", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Cantonese Yale", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Zhuyin Fuhao", ["l"] = "literally", }

-- article titles for wikilinks for each part local wlinks = { ["c"] = "Chinese language", ["s"] = "simplified Chinese characters", ["t"] = "traditional Chinese characters", ["p"] = "pinyin", ["tp"] = "Tongyong Pinyin", ["w"] = "Wade–Giles", ["j"] = "Jyutping", ["cy"] = "Yale romanization of Cantonese", ["poj"] = "Pe̍h-ōe-jī", ["zhu"] = "Bopomofo", }

-- for those parts which are to be treated as languages their ISO code local ISOlang = { ["c"] = "zh", ["t"] = "zh-Hant", ["s"] = "zh-Hans", ["p"] = "zh-Latn-pinyin", ["tp"] = "zh-Latn", ["w"] = "zh-Latn-wadegile", ["j"] = "yue-jyutping", ["cy"] = "yue", ["poj"] = "hak", ["zhu"] = "zh-Bopo", }

local italic = { ["p"] = true, ["tp"] = true, ["w"] = true, ["j"] = true, ["cy"] = true, ["poj"] = true, } -- Categories for different kinds of Chinese text local cats = { ["c"] = "", ["s"] = "", ["t"] = "", }

function p.Zh(frame) -- load arguments module to simplify handling of args local getArgs = require('Module:Arguments').getArgs local args = getArgs(frame) return p._Zh(args) end function p._Zh(args) local uselinks = not (args["links"] == "no") -- whether to add links local uselabels = not (args["labels"] == "no") -- whether to have labels local capfirst = args["scase"] ~= nil

        local t1 = false -- whether traditional Chinese characters go first
        local j1 = false -- whether Cantonese Romanisations go first
        local testChar
        if (args["first"]) then
                 for testChar in mw.ustring.gmatch(args["first"], "%a+") do
          if (testChar == "t") then
           t1 = true
           end
          if (testChar == "j") then
           j1 = true
           end
         end
        end
        if (t1 == false) then
         local title = mw.title.getCurrentTitle()
         t1 = t1st[title.text] == true
        end

-- based on setting/preference specify order local orderlist = {"c", "s", "t", "p", "tp", "w", "j", "cy", "poj", "zhu", "l"} if (t1) then orderlist[2] = "t" orderlist[3] = "s" end if (j1) then orderlist[4] = "j" orderlist[5] = "cy" orderlist[6] = "p" orderlist[7] = "tp" orderlist[8] = "w" end -- rename rules. Rules to change parameters and labels based on other parameters if args["hp"] then -- hp an alias for p ([hanyu] pinyin) args["p"] = args["hp"] end if args["tp"] then -- if also Tongyu pinyin use full name for Hanyu pinyin labels["p"] = "Hanyu Pinyin" end if (args["s"] and args["s"] == args["t"]) then -- Treat simplified + traditional as Chinese if they're the same args["c"] = args["s"] args["s"] = nil args["t"] = nil elseif (not (args["s"] and args["t"])) then -- use short label if only one of simplified and traditional labels["s"] = labels["c"] labels["t"] = labels["c"] end local body = "" -- the output string local params -- for creating HTML spans local label -- the label, i.e. the bit preceeding the supplied text local val -- the supplied text -- go through all possible fields in loop, adding them to the output for i, part in ipairs(orderlist) do if (args[part]) then -- build label label = "" if (uselabels) then label = labels[part] if (capfirst) then label = mw.language.getContentLanguage():ucfirst(

Recently, bisphenol S (BPS), an analog of BPA that has been shown to have similar in vitro estrogenic activity to BPA,[9][10] has been used in thermal paper coatings. The recycling of thermal paper coated with BPS can introduce BPS into the cycle of paper production and cause BPS contamination of other types of paper products.[7]

See also

References


-- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --


local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}


-- Helper functions


local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end


-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.


function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end

function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end


-- Hatnote -- -- Produces standard hatnote text. Implements the template.


function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p-------------------------------------------------------------------------------- -- Module:Hatnote -- -- -- -- This module produces hatnote links and links to related articles. It -- -- implements the and meta-templates and includes -- -- helper functions for other Lua hatnote modules. --


local libraryUtil = require('libraryUtil') local checkType = libraryUtil.checkType local mArguments -- lazily initialise Module:Arguments local yesno -- lazily initialise Module:Yesno

local p = {}


-- Helper functions


local function getArgs(frame) -- Fetches the arguments from the parent frame. Whitespace is trimmed and -- blanks are removed. mArguments = require('Module:Arguments') return mArguments.getArgs(frame, {parentOnly = true}) end

local function removeInitialColon(s) -- Removes the initial colon from a string, if present. return s:match('^:?(.*)') end

function p.findNamespaceId(link, removeColon) -- Finds the namespace id (namespace number) of a link or a pagename. This -- function will not work if the link is enclosed in double brackets. Colons -- are trimmed from the start of the link by default. To skip colon -- trimming, set the removeColon parameter to true. checkType('findNamespaceId', 1, link, 'string') checkType('findNamespaceId', 2, removeColon, 'boolean', true) if removeColon ~= false then link = removeInitialColon(link) end local namespace = link:match('^(.-):') if namespace then local nsTable = mw.site.namespaces[namespace] if nsTable then return nsTable.id end end return 0 end

function p.formatPages(...) -- Formats a list of pages using formatLink and returns it as an array. Nil -- values are not allowed. local pages = {...} local ret = {} for i, page in ipairs(pages) do ret[i] = p._formatLink(page) end return ret end

function p.formatPageTables(...) -- Takes a list of page/display tables and returns it as a list of -- formatted links. Nil values are not allowed. local pages = {...} local links = {} for i, t in ipairs(pages) do checkType('formatPageTables', i, t, 'table') local link = t[1] local display = t[2] links[i] = p._formatLink(link, display) end return links end

function p.makeWikitextError(msg, helpLink, addTrackingCategory) -- Formats an error message to be returned to wikitext. If -- addTrackingCategory is not false after being returned from -- Module:Yesno, and if we are not on a talk page, a tracking category -- is added. checkType('makeWikitextError', 1, msg, 'string') checkType('makeWikitextError', 2, helpLink, 'string', true) yesno = require('Module:Yesno') local title = mw.title.getCurrentTitle() -- Make the help link text. local helpText if helpLink then helpText = ' (help)' else helpText = end -- Make the category text. local category if not title.isTalkPage and yesno(addTrackingCategory) ~= false then category = 'Hatnote templates with errors' category = string.format( '%s:%s', mw.site.namespaces[14].name, category ) else category = end return string.format( '%s', msg, helpText, category ) end


-- Format link -- -- Makes a wikilink from the given link and display values. Links are escaped -- with colons if necessary, and links to sections are detected and displayed -- with " § " as a separator rather than the standard MediaWiki "#". Used in -- the template.


function p.formatLink(frame) local args = getArgs(frame) local link = args[1] local display = args[2] if not link then return p.makeWikitextError( 'no link specified', 'Template:Format hatnote link#Errors', args.category ) end return p._formatLink(link, display) end

function p._formatLink(link, display) -- Find whether we need to use the colon trick or not. We need to use the -- colon trick for categories and files, as otherwise category links -- categorise the page and file links display the file. checkType('_formatLink', 1, link, 'string') checkType('_formatLink', 2, display, 'string', true) link = removeInitialColon(link) local namespace = p.findNamespaceId(link, false) local colon if namespace == 6 or namespace == 14 then colon = ':' else colon = end -- Find whether a faux display value has been added with the | magic -- word. if not display then local prePipe, postPipe = link:match('^(.-)|(.*)$') link = prePipe or link display = postPipe end -- Find the display value. if not display then local page, section = link:match('^(.-)#(.*)$') if page then display = page .. ' § ' .. section end end -- Assemble the link. if display then return string.format('%s', colon, link, display) else return string.format('%s%s', colon, link) end end


-- Hatnote -- -- Produces standard hatnote text. Implements the template.


function p.hatnote(frame) local args = getArgs(frame) local s = args[1] local options = {} if not s then return p.makeWikitextError( 'no text specified', 'Template:Hatnote#Errors', args.category ) end options.extraclasses = args.extraclasses options.selfref = args.selfref return p._hatnote(s, options) end

function p._hatnote(s, options) checkType('_hatnote', 1, s, 'string') checkType('_hatnote', 2, options, 'table', true) local classes = {'hatnote'} local extraclasses = options.extraclasses local selfref = options.selfref if type(extraclasses) == 'string' then classes[#classes + 1] = extraclasses end if selfref then classes[#classes + 1] = 'selfref' end return string.format( '
%s
', table.concat(classes, ' '), s )

end

return p
  1. ^ U. S. Patent 5,216,438, Direct color thermal printing method for optically and thermally recording a full-color image on a thermosensitive recording medium, by S. Nakao, N. Katsuma and A. Nagata, Fuji Photo Film Co. (1993).
  2. ^ U. S. Patent 7,166,558, Thermal imaging system, Bhatt et al., (2007).
  3. ^ Chemistry and Applications of Leuco Dyes, ed. Ramaiah Muthyala, Plenum Press, New York, pp. 125-203 (1997)
  4. ^
  5. ^
  6. ^
  7. ^ a b
  8. ^
  9. ^
  10. ^

External links

  • Texas Instruments-Computers & Software and Industrial Controls
  • Silent 700 Electronic Data Terminals, 1976(PDF)
  • 2ST Two-Sided Thermal Printing National Cash Register
This article was sourced from Creative Commons Attribution-ShareAlike License; additional terms may apply. World Heritage Encyclopedia content is assembled from numerous content providers, Open Access Publishing, and in compliance with The Fair Access to Science and Technology Research Act (FASTR), Wikimedia Foundation, Inc., Public Library of Science, The Encyclopedia of Life, Open Book Publishers (OBP), PubMed, U.S. National Library of Medicine, National Center for Biotechnology Information, U.S. National Library of Medicine, National Institutes of Health (NIH), U.S. Department of Health & Human Services, and USA.gov, which sources content from all federal, state, local, tribal, and territorial government publication portals (.gov, .mil, .edu). Funding for USA.gov and content contributors is made possible from the U.S. Congress, E-Government Act of 2002.
 
Crowd sourced content that is contributed to World Heritage Encyclopedia is peer reviewed and edited by our editorial staff to ensure quality scholarly research articles.
 
By using this site, you agree to the Terms of Use and Privacy Policy. World Heritage Encyclopedia™ is a registered trademark of the World Public Library Association, a non-profit organization.
 



Copyright © World Library Foundation. All rights reserved. eBooks from World eBook Library are sponsored by the World Library Foundation,
a 501c(4) Member's Support Non-Profit Organization, and is NOT affiliated with any governmental agency or department.