Skip to content

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - KEEER/node-native-printer-dist · GitHub
Skip to content

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

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

Repository files navigation

node-native-printer

A node module to natively print your files

Requirements

  • Windows:

    • edge, electron-edge (depending on your environment) or any other fork of these. The package you choose should be installed before node-native-printer. During installation you'll be prompted to select which package do you want to use.
      BE CAREFULLY: it will be listed all packages in node_modules containing the word "edge"; be sure to make the right choice

      If you wish, you can manually specify which fork of edge or electron-edge to use. See installation

  • Unix (Mac and Linux)

    • node-gyp to build native modules
    • cups (Linux only). You need libcups2-dev and libcups2. The first contains source code needed to build native modules, the second contains command-line executables needed in order to print. It may also need libcups2 in production. See API

Imporant notes

Due to important differences in enviroments and ecosystems between Microsoft and Unix-based systems, this module has been written in C++ for Unix and C# for Windows. This can result in different behaviours during the execution of the methods (such as different execution time, returning values, allowed options for printer, etc.).


Installation

npm install node-native-printer --save

You will be prompted for selecting edge backend based on installed packages that contains the word "edge". If you wish to enter manually the name of edge backend package, select Not listed and type it manually.

Flags (Windows only)

  • -p or --production: to be used when packaging with (i.e.) electron-builder. It will skip prompting for edge backend and will take correctly the dll path needed for windows.
    Note that -p flag require that edge backend has been specified during installation.

Usage

First of all you need to require the module inside your app this way:

constprinter=require('node-native-printer');

Then you can set a printer to work on, calling setPrinter(printerName). In this way you don't need to pass else the printer name on each method it's required.

API

listPrinters()

return an array with all installed printers

defaultPrinterName()

return the default printer name

setPrinter(printer)

set the printer to work on

getCurrentPrinter()

get current printer you are working on

printerInfo(printer)

return general info about current working printer such jobs and options:

  • printer: printer of which get informations
  • returning value:
    • Windows: return only jobs in printer queue
    • Unix: return jobs in printer queue and CUPS options. Theese last depends on printer

printerOptions(printer)

return printer-specific options:

  • printer: name of the printer to print on. If not specified it will print on previously setted printer. If printer is not set it will print on default printer.

  • Returning value:

    • Windows: return an object containing main options for printer:
    {
    "Collate": "array containing collation options",
    "Duplexing": "array containing collation options",
    "MaxCopy": "max number of copies you can send to printer",
    "SupportsColor": "boolean indicating whether a print can print with colors",
    "PaperSheets": "available paper formats supported from printer. If custom is present it can be submitted custom width and height",
    "Resolutions": "printer resolutions (i.e.: High, Medium)"
    }
    • Unix: return an object containing printer-specific options and from PPD file.

print(filename[, options, printer])

  • filename: file to print
  • options: a JSON object containing options for printer:
    • Windows: default options:

      {
      "collate": true,
      "color": true,
      "copies": 1,
      "duplex": "Default",
      "landscape": false,
      "paperSize": "",
      "fromPage": 0,
      "toPage": 0
      }

      List of supported extensions can be found here

      Notes: duplex is case sensitive, so be careful to write correctly. "paperSize" refers to size of sheet to print on; if you want to print on a paper with custom dimensions, pass "Custom.WidthxHeight" where Width and Height are integer dimensions in hundredths of inch. "fromPage": 0 means document will be printed from first page; "toPage": 0 means document will be printed from "fromPage" to last page.

    • Unix: you can use command-line options in JSON-style and/or printer-specific options retrieved from printerOptions(); i.e.:

      {
      "landscape": true,
      "n": 2,
      "sides": "two-sided-long-edge"
      }

      For options that doesn't have a value (like landscape or fit-to-page) you can assign a boolean (see above)

      It will be generated and executed a command like lp -d printerName /path/to/filename -o landscape -n 2 -o sides=two-sided-long-edge

  • Returning value (only for Unix): job id of work sent to printer

printText(text[, options, printer])

Same as print() but you can pass directly a string of text on the first parameter.

Electron Packaging (Windows only)

As from electron's docs, there are two methods of packaging your app: with one of the builders or manually making your own an asar archive.

  • Builders (tested with electron-builder): it's enough to add flag -p or --production.
    Example with electron-builder:
    "build": {
    "npmArgs": "--production"
    }
    
  • Manually packing: you'll need to copy all lib/windows folder, under <app-root>/resources/app.asar.unpacked/node_modules/node-native-printer/lib/windows.
    The tree will look like:
    /app folder
    +-- ...
    +-- resources/
    +-- app.asar
    +-- electron.asar
    +-- app.asar.unpacked/
    +-- node_modules/
    +-- node-native-printer/
    +-- lib/
    +-- windows/
    +-- nl/
    +-- x64/
    +-- x86/
    +-- PdfiumViewer.dll
    +-- PdfiumViewer.xml
    +-- windows_printer.dll
    

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages