Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

WebPrint

WebPrint

Print directly to printers using Javascript.

WebPrint is a fork of QZ-print: https://github.com/qzindustries/qz-print

It uses postMessage API and/or ajax calls to communicate with the Java applet. This differs from QZ-print, that uses Java Web Start and the Java deployment framework for communication.

The Java deployment framework is set to be removed in early 2015, I wanted to find another way to use QZ-print, which provides a seamless printing experience for web applications.

See an example.html/webprint.js for usage or click here for a live version of the example.

If WebPrint has helped with your project, please donate to support it's future development.

Donate to WebPrint

OS Compatability

The main Webprint applet (hosted here) is compatible with Windows, OSX and Linux.

Android support is provided via the Android app: https://github.com/micwallace/webprint-android NOTE: Serial and HTML printing is not currently supported on Android.

The javacript library will prompt you to install or open the correct applet if it is not running.

HTTPS usage

If you site uses HTTPS, requests to HTTP server are almost certainly blocked by default due to mixed-content restrictions. Thankfully, WebPrint uses an innovative solution to avoid this by using an intermediary browser tab/window and the postMessage API. This negates the need for end-users to change their browser settings. For an example on how to use this feature, see example.html in the project. Note that the example prints ESC/P formatted data which may not be compatible with all printers.

How this came about

Mid last year I developed an android applet that essentially accepts http requests and forwards them to the specified socket or network printer. https://github.com/micwallace/HttpSocketAdaptor

After a few months I found this solution stopped working due to stronger mixed-content restrictions in most browsers. Thanks to the postMessage API I was able to securely avoid these restrictions.

After that WebPrint was just a matter of time.

Thanks

A big thanks to the qz-print guys for allowing this project to happen and EJ Technologies for providing their excellent cross platform installer.

Install4j

Install4j: Multi-platform installer builder

Install Dependencies

https://github.com/qzind/tray/wiki/install-dependencies

Compiling

https://github.com/qzind/tray/wiki/Compiling

Steps

  1. First, install dependencies (jdk, git, ant, nsis/makeself) per Install Dependencies

JDK

JDK7 is sufficient for building QZ Tray/QZ Print 1.9

Windows

Install ⚠️JDK 7 or higher:

http://www.oracle.com/technetwork/java/javase/downloads/

Download and extract Apache Ant:

https://ant.apache.org/bindownload.cgi

Setup environment variables JAVA_HOME, PATH, etc:

Assume Ant is installed in c:\ant. The following commands set up the environment:

 set ANT_HOME=c:\ant
set JAVA_HOME=c:\jdk1.7.0_51
set PATH=%PATH%;%ANT_HOME%\bin

http://ant.apache.org/manual/install.html#setup

Install NSIS 3.0+:

http://nsis.sourceforge.net/Download

Install git:

https://git-scm.com/download/win

Mac

Install command line tools for OS X (installation methods vary)

Install ⚠️JDK 7 or higher via: http://www.oracle.com/technetwork/java/javase/downloads/

Install homebrew via:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Install brew dependencies via:

brew install ant makeself nsis

Install git:

https://git-scm.com/download/mac

Ubuntu

Install all dependencies (:warning:jdk7, ant, nsis, makeself) via:

sudo apt-get install git openjdk-7-jdk ant nsis makeself

Fedora

Install all dependencies (:warning:jdk, ant, nsis, makeself) via:

sudo yum install git java-1.?.0-openjdk-devel java-1.?.0-openjdk-openjfx-devel ant nsis makeself
  1. Clone the source code per Clone Source Code

  2. Pull in the latest source code

cd tray
git pull
  1. Compile
ant

Optional: Start the software up using this command.

Basic syntax (after closing all instances of QZ Tray)

java -Xms512M -jar qz-tray.jar

Windows (after closing all instances of QZ Tray)

java -Xms512M -jar "%PROGRAMFILES%\QZ Tray\qz-tray.jar"

Mac OS X (after closing all instances of QZ Tray)

/Applications/QZ\ Tray.app/Contents/MacOS/QZ\ Tray

Linux/Other (after closing all instances of QZ Tray)

java -Xms512M -jar /opt/qz-tray/qz-tray.jar

QZ Tray launches with 512MB of memory. We must specify -Xms512M in the command in order to prevent unexpected behavior and crashing. This unnecessary for Mac unless following the basic syntax (java -jar qz-tray.jar) . More memory can be allocated but should not be necessary.

  1. Package
ant nsis # <-- Windows installer
ant pkgbuild # <-- Apple installer
ant makeself # <-- Linux installer
  1. QZ Tray places log files in the following locations:

Windows: %APPDATA%\qz Mac: ~/Library/Application Support/qz Linux: ~/.qz

Note: The installer will be placed in ./out/qz-tray-x.x.x.x, (i.e. .exe, .run, .pkg)

About

Print directly to printers using Javascript.

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages