[Question]
  [
Yes, really. **Print** it with a hardware printer üñ® to create a hard copy.
Send the necessary commands/data to your printer such that the following text is printed on a piece of paper:
> 
> Hello, World!
> 
> 
> 
You may use any local- or network-connected printer that is available to you.
If your printer allows, you should use 8pt or greater text in black ink on white paper.
The text should appear on its own line. It may be left or right positioned as you wish.
Digital photographic/video/GIF evidence of submissions will be helpful.
If your hardware cannot do paper, but allows other exotic hardcopy production such as 3D printing, CNC machining, or [printing at the atomic level](https://en.wikipedia.org/wiki/IBM_(atoms)), then I will happy to accept such interesting submissions.
---
To clarify, the question asks *"Send the necessary commands/data to your printer"*. The implication of this is that no further user input should be required. Opening a print dialog is not sufficient. Existing answers that do this as of 10:48am PST 31st Dec 2016 will be grandfathered (but not upvoted by me).
  
[Answer]
## Bash, ~~21~~ 19 bytes
```
lp<<<Hello,\ World!
```
[![actual printout](https://i.stack.imgur.com/IFr2a.jpg)](https://i.stack.imgur.com/IFr2a.jpg)
And there it is.
2 bytes saved thanks to [Dennis](https://codegolf.stackexchange.com/users/12012/dennis)!
[Answer]
# [PowerShell](https://github.com/PowerShell/PowerShell), 18 bytes
```
'Hello, World!'|lp
```
[Try it online!](https://tio.run/nexus/powershell#@6/ukZqTk6@jEJ5flJOiqF6TU/D/PwA "PowerShell ‚Äì TIO Nexus")
[![enter image description here](https://i.stack.imgur.com/KWyJM.png)](https://i.stack.imgur.com/KWyJM.png)
[Answer]
## [QBIC](https://drive.google.com/drive/folders/0B0R1Jgqp8Gg4cVJCZkRkdEthZDQ), 11 bytes
```
'LPRINT `_h
```
Almost forgot I built a 'Hello, World!' command into QBIC...
```
'          Starts a code literal. This used to be "$", finally changed it.
 LPRINT `  Feeds everything from ` to the next ` directly to QBasic. 
           In this case, "LPRINT" and a space
_h         Yields "Hello, World!"
```
Tested and found working identical to my QBasic answer:
[![enter image description here](https://i.stack.imgur.com/LPfJV.png)](https://i.stack.imgur.com/LPfJV.png)
[Answer]
# Batch, 22 bytes
```
echo Hello, World!>prn
```
This redirects the output of the `echo` command to the [device file PRN](https://en.wikipedia.org/wiki/Device_file#DOS.2C_OS.2F2.2C_and_Windows), meaning that it's sent directly to the default printer (usually LPT1).
I neither have a DOS machine nor a printer, so I'm afraid I can't test this right now, but I'm fairly certain I've done this back in the day. It doesn't work on Windows XP or later.
[Answer]
# Python 2.7, 43 bytes
```
import os;os.system("lp<<<'Hello, World!'")
```
Not very interesting, though. Here's a more interesting one:
```
import zlib,base64,os;os.system("s=$'%s';lp<<<\"$s\""%zlib.decompress(base64.decodestring("eNqVkk1qxDAMha/yupNgwNfoDboReDPdhQRmrcNXP3bixA3tGEMesj/r5wXoq+YysUemI0BWlYgV\npTyAEDKEQSDucxLxJaj6gUVKE8BFsH2TIOM5iMyrcTIL3YnMqCH4X0TLONTwF3H04Z0XuRPeR3Wi\nxDOi1EZY7gUTWFa8s+z5kTgcnK3sBtbZQRtCt5LPDlrliKouDh5DYz07KB6COuETUL/YRthGxHqZ\nbjyWBAU8EFk6z350Yt97Dol65hxUow9i3zr8YGxFS61nB4szPqvDnS7CU/nFwYLIYczn97JsD3xt\nr+X5wT/ARNN3\n")))
```
Seems a bit too long? Perhaps it's a bit overcomplicated.... :P
[![A lot of hello world](https://i.stack.imgur.com/GWzSg.jpg)](https://i.stack.imgur.com/GWzSg.jpg)
**Mod Note** edited the competitive submission to the top for clarity.
[Answer]
# HTML + Javascript, ~~37~~ 34 bytes
```
<body onload=print()>Hello, World!
```
Tested in Safari:
[![enter image description here](https://i.stack.imgur.com/rHEoF.png)](https://i.stack.imgur.com/rHEoF.png)
Thanks to [@jimmy23013](https://codegolf.stackexchange.com/users/25180/jimmy23013) for some savings.
[Answer]
# hello + lp + tr, ~~9~~ 15 bytes
```
hello|tr w W|lp
```
I originally had
```
hello|lp
```
But it had the wrong capitalisation on the `w`
`hello` is GNU hello from the Debian package [hello](https://packages.debian.org/sid/hello)
[Answer]
## ZX Spectrum BASIC, 16 bytes
```
LPRINT "Hello, World!"
```
`LPRINT` is a 1-byte keyword in ZX Spectrum BASIC, having codepoint 224.
[Answer]
# MATLAB, ~~40~~ ~~37~~ 36 bytes
Printing text is not something you'd normally do in Matlab, but it can be done.
```
title 'Hello, World!'
axis off;print
```
I saved 3 bytes thanks to Tom Carpenter (use `title` instead of `text(0,0,`. I saved an additional 2 bytes by substiting `title('Hello, World!') with` title 'Hello, World!' followed by a newline instead of a semicolon.
[`title`](https://se.mathworks.com/help/matlab/ref/title.html) adds a title to a figure. If a figure is not yet open, it will be created.
[`axis off`](https://se.mathworks.com/help/matlab/ref/axis.html) is used to get rid of the frame and axes, so that the text appears alone.
[`print`](https://se.mathworks.com/help/matlab/ref/print.html) prints the current figure to the default printer if no input arguments are given.
I printed this (successfully according to the dialog box) on my default printer at the office. I can retrieve it there and prove it but you'll have to wait two weeks. After changing the default to a pdf-printer, this is the output:
[![enter image description here](https://i.stack.imgur.com/EyOOB.png)](https://i.stack.imgur.com/EyOOB.png)
^^ Not the correct image anymore.
[Answer]
## QBasic, 21 bytes
```
LPRINT"Hello, World!"
```
`LPRINT` sends text directly to the printer. Unfortunately untested, DosBox doesn't natively support `NET USE`, so I can't reroute `LPT1:` to NovaPDF.
The problems I have...
UPDATE: Tested it in QB64. Resulting PDF opened in Microsoft Edge. Looks like this:
[![enter image description here](https://i.stack.imgur.com/rs79e.png)](https://i.stack.imgur.com/rs79e.png)
[Answer]
# 8086 machine code, 28 bytes
```
00000000  be 0f 01 b9 0d 00 31 d2  ac 98 cd 17 e2 fa c3 48  |......1........H|
00000010  65 6c 6c 6f 2c 20 57 6f  72 6c 64 21              |ello, World!|
0000001c
```
Uses the standard `int 0x17` BIOS call. I don't have my dot-matrix printer set up right now so this code is untested.
How it works:
```
            |   org 0x100
            |   use16
be 0f 01    |       mov si, msg         ; source pointer = msg
b9 0d 00    |       mov cx, 13          ; counter = length of msg
31 d2       |       xor dx, dx          ; clear dx
ac          |   @@: lodsb               ; al = *si++
98          |       cbw                 ; sign-extend al->ax (simply clears ah)
cd 17       |       int 0x17            ; send char in al to printer dx
e2 fa       |       loop @b             ; loop while (cx-- > 0)
c3          |       ret
48 65 6c    |   msg db "Hello, World!"
6c 6f 2c    |   
20 57 6f    |   
72 6c 64    |   
21          |   
```
[Answer]
# Stuck + Batch, 5 bytes
Inspired by [this answer](https://codegolf.stackexchange.com/a/55425/56477) an empty **stuck** program prints "Hello, World!".
1. Have a printer connected to your computers LPT1 port
2. Create an empty stuck file to be interpreted (filename a)
3. Run the stuck interpretter on the empty file and pipe the result to LPT1
## Code
```
stuck a>LPT1
```
[Answer]
# Java, 330 bytes
Golfed:
```
import java.awt.print.*;void f()throws Throwable{PrinterJob job=PrinterJob.getPrinterJob();job.setPrintable(new Printable(){public int print(java.awt.Graphics g,PageFormat f,int i){if(i==0){((java.awt.Graphics2D)g).translate(f.getImageableX(),f.getImageableY());g.drawString("Hello, World!",0,90);}return i>0?1:0;}});job.print();}
```
Ungolfed (import plus function only):
```
import java.awt.print.*;
void f() throws Throwable {
  PrinterJob job = PrinterJob.getPrinterJob();
  job.setPrintable(new Printable() {
    public int print(java.awt.Graphics g, PageFormat f, int i) {
      if (i == 0) {
        ((java.awt.Graphics2D) g).translate(f.getImageableX(), f.getImageableY());
        g.drawString("Hello, World!", 0, 90);
      }
      return i > NO_SUCH_PAGE ? 1 : PAGE_EXISTS;
    }
  });
  job.print();
}
```
Java is not a great golfing language, and certain does an exceptionally poor job golfing *anything* hardware-related, printing included.
While testing this program, I set my PDF printer as the default. It worked, but also sent a print job to my laser printer containing 87,792 pages of "Hello, World!" I pulled the paper tray and canceled the job, then retested. It did not happen again. Thanks, Windows 10.
[Answer]
## GFA-Basic, 22 bytes
Only tested on an Atari ST emulator with the parallel port redirected to a file. It should work on the [Windows version of GFA-Basic](http://gfabasic32.blogspot.fr/) (which is free), but this is untested.
```
LPRINT "Hello, World!"
```
*Note:* This turns out to be identical to the [QBasic](https://codegolf.stackexchange.com/a/105125/58563) syntax.
[Answer]
# Mathematica, 29 bytes
```
NotebookPrint@"Hello, World!"
```
[![enter image description here](https://i.stack.imgur.com/Rqrjj.png)](https://i.stack.imgur.com/Rqrjj.png)
[Answer]
## JavaScript, 37 36 bytes
```
print(document.write`Hello, World!`)
```
*Saved 15 bytes thanks to @manatwork and @xem!*
[Answer]
## c#, ~~259~~ 250 bytes
```
using System.Drawing;using System.Drawing.Printing;struct p{static void Main(){var p=new PrintDocument();p.PrintPage+=(s,e)=>e.Graphics.DrawString("Hello,World!",new Font("Arial",12),new SolidBrush(Color.Black),new Rectangle(0,0,999,99));p.Print();}}
```
[Example output](http://swdev.co.za/ftp/hello.pdf)
[Answer]
## Batch, 32 bytes
```
echo Hello, World!>t
notepad/P t
```
Should work on all versions of windows with no manual intervention required.
[Answer]
# [APL (Dyalog)](https://www.dyalog.com/), 50 bytes
Of course we could shell out and use a Batch/Bash solution, but let us instead create a real print job:
```
{'X.'‚éïWC'Text' 'Hello, World!'‚çµ‚ä£'X'‚éïWC'Printer'}‚ç≥2
```
`‚éïWC`‚ÄÉis **W**indows **C**reate object
First we create a printer object (a print job) called `'X'`, then (`‚ä£`) in that (`'X.'`) we create a text object at `‚çµ` the argument of the anonymous function `{`‚Ä¶`}`. The argument is `‚ç≥2`, which gives the first two integers (`1 2`) and means 1% from the top and 2% from the left. When the anonymous function terminates, all its local variables (`X`) are destroyed, which signals to Windows that the print job is ready to be printed:
---
## Print job
[Answer]
# [Ruby](https://www.ruby-lang.org/), 55 bytes
```
IO.write(?l,"Hello, World!");`lpr<<?l`
```
For Mac and Linux, your default printer must be set at [localhost:631](http://localhost:631).
For Windows, you need to add an lpr port in your printer settings.
[Answer]
## Racket 35 bytes
```
(system("echo 'Hello World!'\|lp"))
```
[Answer]
# ZPL ([Zebra Programming Language](https://en.wikipedia.org/wiki/Zebra_(programming_language))), 25 bytes
**Code:**
```
^XA^FDHello, World!^XZ~PS
```
**[Try it online!](http://labelary.com/viewer.html?density=6&width=1&height=1&units=inches&index=0&zpl=%5EXA%5EFDHello%2C%20World!%5EXZ%7EPS)**
**Explanation:**
```
^XA                        # Start Format
    ^FDHello, World!       # Field Data "Hello, World!"
^XZ                        # End Format
~PS                        # Print Start
```
[Answer]
# Python 3 (Win32), 114 bytes
I used the win32api library to do this.
```
import win32api;open('h.txt', 'w').write('Hello, World!');win32api.ShellExecute(0, 'print', 'h.txt', None, '.', 0)
```
[Answer]
# Lua, 34 32 bytes
```
os.execute"lp<<<'Hello, World!'"
```
[Answer]
# HTML (33)
```
Hello, World!<svg onload=print()>
```
(Prompts a print window in the browser, doesn't print directly)
[Answer]
# JavaScript + HTML, 20 bytes
```
print()
```
```
Hello, World!
```
[Answer]
# C#, 174 bytes
```
namespace System.Drawing.Printing{_=>{var p=new PrintDocument();p.PrintPage+=(s,e)=>e.Graphics.DrawString("Hello, World!",new Font("Onyx",9),Brushes.Black,0,0);p.Print();};}
```
Full/Formatted version:
```
namespace System.Drawing.Printing
{
    class P
    {
        static void Main(string[] args)
        {
            Action<float> f = _ =>
            {
                var p = new PrintDocument();
                p.PrintPage += (s, e) =>
                    e.Graphics.DrawString("Hello, World!", new Font("Onyx", 9), Brushes.Black, 0, 0);
                p.Print();
            };
            f(0);
        }
    }
}
```
[Answer]
## Javascript, 36 bytes
```
print(document.write`Hello, World!`)
```
]