@oliverphaser/nativescript-printer
将图片、PDF或屏幕内容发送到物理打印机。从EddyVerbruggen分叉,并针对NativeScript 8进行更新,修复了Android上多页打印的问题。
npm i --save @oliverphaser/nativescript-printer

npm apple android
support

在打印前请考虑环境问题!

NativeScript 打印插件

一个用于将图片、PDF或屏幕内容发送到物理打印机的NativeScript模块。

NativeScript 8

这只能在NativeScript 8上工作。

安装

从命令提示符进入您的应用程序根目录并执行

ns plugin add @oliverphaser/nativescript-printer

演示应用程序

想快速上手?查看演示!否则,继续阅读。

从项目的根目录运行演示应用程序:npm run demo.iosnpm run demo.android

Android 截图

    

iOS 截图

    

API

isSupported

并非所有设备都支持打印,因此事先检查设备功能是合理的。

TypeScript
// require the plugin
import { Printer } from "@oliverphaser/nativescript-printer";

// instantiate the plugin
let printer = new Printer();

printer.isSupported().then((supported) => {
alert(supported ? "Yep!" : "Nope :'(");
}, (error) => {
alert("Error: " + error);
});

printImage

TypeScript
// let's load an image that we can print. In this case from a local folder.
let fs = require("file-system");
let appPath = fs.knownFolders.currentApp().path;
let imgPath = appPath + "/res/printer.png";
let imgSrc = new ImageSource();
imgSrc.loadFromFile(imgPath);

printer.printImage({
imageSrc: imgSrc
}).then((success) => {
alert(success ? "Printed!" : "Not printed");
}, (error) => {
alert("Error: " + error);
});

printPDF

TypeScript
import { knownFolders } from "@nativescript/core";

printer.printPDF({
pdfPath: knownFolders.currentApp().path + "/pdf-test.pdf"
}).then((success) => {
alert(success ? "Printed!" : "Not printed");
}, (error) => {
alert("Error: " + error);
});

printScreen

打印当前屏幕内容。屏幕之外的内容将不会打印。

TypeScript
printer.printScreen().then((success) => {
alert(success ? "Printed!" : "Not printed");
}, (error) => {
alert("Error: " + error);
});

您还可以打印屏幕的特定部分,这还使您能够打印比视口更大的视图。这是一个非Angular NativeScript应用程序的示例

注意 如果视图是以下之一,则根据其内容的尺寸可能会分成多个页面。

标签 | 文本视图 | Html视图 | 网页视图

  <StackLayout id="printMe">
<Label text="Print me :)" />
</StackLayout>

<Button text="Print" tap="{{ print }}" />
  public print(args) {
printer.printScreen({
view: args.object.page.getViewById("printMe")
});
}