When an organization can easily answer 'Who, What, When, Where, Why, and How' their printing behavior affects their bottom line, they are finally managing with the facts.
In fact, more than 50,000 organizations in 100+ countries already use PaperCut NG to do just that.
PaperCut NG is the easy way to automatically monitor and manage printing in your organization, giving you control over your costs and environmental impact. PaperCut NG software intercepts print jobs on the print server and analyzes them, applying rules to enforce your print policies. PaperCut NG gives you full control over your fleet of printers.
PaperCut NG is the easy way to automatically monitor and manage printing in your organization, giving you control over your costs and environmental impact. PaperCut NG software intercepts print jobs on the print server and analyzes them, applying rules to enforce your print policies. PaperCut NG gives you full control over your fleet of printers.
Track All Activity
Build on PaperCut NG printing PLUS copy, scan and fax.
Find-Me Printing
Print to a single global queue, walk up and collect at any device.
- Use PaperCut NG when you need to manage and control printing. It’s an easy to use, cost effective print tracking and control solution. PaperCut MF goes beyond just print, with the ability to manage and track off-the-glass copier activity, including scan, copy and fax via hardware-level integration.
- PaperCut's advanced scripting interface is a powerful and flexible feature that can be used to define and finely tune your printing policy. MORE + Track MFD Copy/Print/Scan/Fax.
- Our software library provides a free download of PaperCut NG 20.1.2. The common filename for the program's installer is pc-web-print.exe. The most recent installer that can be downloaded is 326.9 MB in size. The following versions: 20.0, 19.2 and 18.3 are the most frequently downloaded ones by the program users.
- PaperCut MF and NG are very similar in core features and, at a technical level, share the same code base. But only PaperCut MF can integrate directly with Multifunction Devices (MFDs) and other hardware to deliver extra features.
Secure Print Release
Ensure documents don't start printing until user released.
Manage Easily
Get full visibility of device activity from anywhere with PaperCut MF.
PaperCut NG has an extensive list of benefits, features, and functionality that is not only easy to install and simple to use - it delivers an almost immediate ROI, no matter the environment.
Site Servers
PaperCut Site Server ensures continuous availability of printing resources to support key business functions over unreliable network links or during unplanned network disruptions.
iOS Printing
PaperCut's iPad Printing support enables printing to all your PaperCut managed printers across your enterprise. As well as enabling printing, the PaperCut iPad App also provides the rich functionality desktop users are used to, such as authentication, balance display and selecting / charging to shared accounts when printing.
Guest Printing
Streamline printing for visitors from their mobile device. Guests simply email an attachment to a designated address for printing with no need to access your wi-fi network or authenticate with your domain.
Print Archiving
PaperCut's Print Archiving empowers approved administrators to browse and review the content of print activity within their environment. Alongside the powerful tracking and reporting functionality built into PaperCut, this gives system administrators a wide range of auditing functions.
Direct Printing
PaperCut makes it easy to print directly from a computer to a printer without a print server. Businesses of any size can track and report on printing keeping configuration, administration and reporting simple.
This alternative PaperCut deployment model simplifies setup for many organizations, alleviating the need to add a print server or change printer and network configuration, saving time and setup costs on install.
Reporting
One-Click Reports
Get access to the most important data in realtime - straight from your web browser, from anywhere on your network
Ad-Hoc Reports
Create reports with custom data by specifying date ranges, filtering and sorting by the data available. Great to give you different perspectives on printing usage
Schedule / Email Reports
Create reports that will be regularly generated and emailed to members of your organization or scheduled to be saved to disk. Great for sending regular reports to managers without even needing to compile it first
Advanced Scripting
If you require more power than PaperCut's in-built filters and restrictions you can leverage Advanced Scripting. To make it easy to get started, advanced scripting comes with dozens of pre-written recipes. Looking at these is a great way to understand their power.
Watermarking
Watermarking is a feature that allows you to print a small portion of text to the top or bottom margin of every page. Typical uses of watermarking include:
• Adding a username to the bottom of every page to help identify the owner.
• Writing job metadata in the footer such as print time, printer or document name.
• Applying a digital signature to help track and verify documents.
Private Cloud
Reduce your organization's capital expenditure by implementing PaperCut in a private cloud hosted server environment.
PaperCut Private Cloud helps your organization save on costs by:
- Reducing or avoiding hardware purchasing, operating system licensing and associated costs.
- Easily providing flexibility and scaling according to changing business needs.
- Delivering a better quality of service, security and management at a cost-effective price.
- Delegating site duplication, data syncing and recovery planning to the host provider.
Cross Platform
PaperCut is part of the new wave of applications that support all platforms equally. We believe that applications should not dictate your choice of operating systems. Therefore PaperCut supports any combination of print servers and user workstations running under Windows, Linux, Mac or Novell OES that you already have running or might be planning to use in the future.
All platforms are treated equally. Releases are synchronized and all have the same feature set. Mac and Linux systems are native versions, not second class ports of a Windows application! Developing cross-platform software at this level is a large engineering investment. However it is something our development team is proud of and is a testament to our dedication to engineering excellence and modern forward-looking design.
Environmental Impact
One of the primary aims of PaperCut is to reduce printing levels by changing a user's printing behavior. Implementing monitoring, quotas and charging are a good way of drawing a user's attention to their habits. The topic of the environment, global warming, and waste management is currently an area of debate and interest to many. Highlighting the environmental aspects of their activities is another good way to modify a user's behavior.
Mobile Print Release
PaperCut's Mobile Print Release allows users to release held jobs directly from their mobile device (smartphone or tablet). In environments where almost everyone has their own mobile device this is a convenient and cost effective alternative to physical release stations.
Google Cloud Print
PaperCut brings its suite of print management features to organizations integrating Google Cloud Print (GCP).
The combination of PaperCut and GCP enables and facilitates management of users with 'Bring Your Own Devices (BYOD)' - Smartphones, Tablets, Chromebooks and Notebooks that do not connect exclusively to existing print networks.
Find Me Printing
Find Me printing solves the problem of finding the closest printer from a long list of available printers. It is a roaming print service that allows print jobs to find users based on their physical location. It is sometimes referred to as 'Pull Printing', 'Push Printing' or 'Follow Me' printing. It is a great solution for large sites operating a common printer fleet.
Email to Print
A completely platform-independent mobile Print Management solution, Email to Print allows any web-connected mobile and portable device to print documents simply by sending an email to your network's print devices.
Client Billing
Users may allocate printing expenses to Shared Accounts using pop-up client software. Shared Accounts are accessible to multiple users.
User Web Interface
The user web interface provides a range of functionality that empowers users to make the most of PaperCut without requiring intervention from administrators. The user web interface allows users to do what they need for themselves, and quickly get back to what they were doing.
For All Things PaperCut, Contact ACDI Today | info@acd-inc.com | 800.990.2234
I migrated from an Apple MacBook to a Windows 10 laptop earlier in the year. Ever since I’ve been busy grokking the world of PowerShell and .NET Core.
As this little learning project has to fit around all my other activities, it’s very much still a work in progress. But I’ve started to share some of my discoveries with PaperCut colleagues, and thought I’d also share them with you.
Note these tips assume you have some PowerShell experience. However, even if you haven’t used PowerShell , you might find it useful to cut and paste these examples into your TEST PaperCut MF/NG server system to see how they work.
There are a number of PowerShell details I’ve glossed over, so further experimentation and reading are very much encouraged.
Tip 1: Create a PowerShell function to make it easy to call the PaperCut server-command utility
Tip 2: The location of the profile is hard to remember
Tip 3: List the PaperCut MF/NG Windows services
Tip 4: Make frequent use of the Get-Member cmdlet!
Tip 5: Use the Select-Object and Where-Object cmdlets to locate and process data
Tip 6: If life gives you lemons strings, make lemonade custom objects*
Tip 7: Use server-command’s get-group-members subcommand instead of list-user-accounts
Tip 1: Create a PowerShell function to make it easy to call the PaperCut server-command utility
Add the following to your PowerShell profile:
Function server-command {
&'C:Program FilesPaperCut MFserverbinwinserver-command.exe' $Args
}
Note the server-command program only runs on the PaperCut MF/NG application server.
Tip 2: The location of the profile is hard to remember
It also varies depending on which version of PowerShell and which operating system you are using. Just use the “magic” variable $PROFILE
instead. For example:
code $PROFILE
(I use VS Code to edit my files)
Tip 3: List the PaperCut MF/NG Windows services
You can find a list of the running PaperCut processes with the Get-Service cmdlet as follows:
Get-Service -DisplayName *PaperCut*
The cmdlet displays a limited amount of information by default, so perhaps more usefully.
Get-Service -DisplayName *PaperCut*
| Format-Table -Property Name, Status, StartType
Tip 4: Make frequent use of the Get-Member
cmdlet!
The biggest difference between PowerShell and other shells (for instance cmd.exe or Bash) is that PowerShell processes objects, while other shells only process text strings (technically that’s an oversimplification, but it will do for now).
This means that the type of the objects passed between PowerShell commands matters a lot! You can discover the details of an object type using the Get-Member cmdlet.
Let’s compare a couple of the previous examples, but add the Get-Member command to see the output type instead:
Get-Service |
Where-Object -Property DisplayName -like -Value 'PaperCut*' |
Get-Member
And we get:
TypeName: System.ServiceProcess.ServiceController
Name MemberType Definition
---- ---------- ----------
Name AliasProperty Name = ServiceName
RequiredServices AliasProperty RequiredServices = Services...
Disposed Event System.EventHandler Dispose...
Close Method void Close()
Continue Method void Continue()
…
But if we run the pipeline …
Get-Service -DisplayName *PaperCut* |
Format-Table -Property Name, Status, StartType |
Get-Member
… the output type is very different:
TypeName: Microsoft.PowerShell.Commands.Internal.Format.FormatStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(Syst...
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
autosizeInfo Property Microsoft.PowerS...
ClassId2e4f51ef21dd47e99d3c952918aff9cd Property string ClassId2e...
groupingEntry Property Microsoft.PowerS...
pageFooterEntry Property Microsoft.PowerS...
pageHeaderEntry Property Microsoft.PowerS...
shapeInfo Property Microsoft.PowerS...
TypeName: Microsoft.PowerShell.Commands.Internal.Format.GroupStartData
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(Syst...
...
So Format-Table
creates output suitable for display purposes and should not be used in the middle of a pipeline when data requires further processing. Which leads us to …
Tip 5: Use the Select-Object and Where-Object cmdlets to locate and process data
See the previous tip for some hints on why. Here’s an example:
Get-Service |
Where-Object -Property DisplayName -like -Value 'PaperCut*' |
Select-Object -Property ServiceName,Status,StartType
The output from this pipeline is still a ServiceController type, which can be further processed, so, for example, we can convert it to JSON:
Get-Service |
Where-Object -Property DisplayName -like -Value 'PaperCut*' |
Select-Object -Property ServiceName,Status,StartType |
ConvertTo-Json
Tip 6: If life gives you lemons strings, make lemonade some custom objects*
* With apologies to Elbert Hubbard
The server-command utility usually returns strings, and often we need to make multiple calls to discover the various pieces of information we need. For example, suppose we want to create a list of users with a Boolean flag to indicate if they are internal or external user accounts. This involves using the subcommand list-user-accounts to get a list of all the user names, and then iterating over the list to get the value of the user’s internal property. Note that the property value is returned as a string (“true”/”false”) rather than a Boolean. How can we wrap this to make it more PowerShell compatible?
The “trick” is that we can convert a string “true” or “false into the corresponding Boolean value with the [System.Convert]::ToBoolean
method. So to discover if a user is an internal user let’s try:
pc-sc get-user-property <user-name> internal
over all the user accounts, and see what types are returned:
pc-sc list-user-accounts |
ForEach-Object {pc-sc get-user-property $_ internal} |
Get-Member
Gives us:
TypeName: System.String
Now use ToBoolean()
and convert strings to Boolean after each get-user-property
call:
pc-sc list-user-accounts |
ForEach-Object {[System.Convert]::ToBoolean((pc-sc get-user-property $_ internal))} |
Get-Member
(Yes, you really do need the ((.. )) double parentheses).
True
So now I can use Foreach-Object
to create a hash table of the user name and a Boolean flag for the internal status:
pc-sc list-user-accounts |
Foreach-Object {
@{
user=$_;
internal=[System.Convert]::ToBoolean((pc-sc get-user-property $_ internal))
}
}
Name Value
---- -----
user ahmed
internal False
user guest-1
internal True
And we use the Get-Member
command to get the type:
TypeName: System.Collections.Hashtable
We can now take it one stage further and convert the hash table (name value pairs) into a custom PowerShell object:
pc-sc list-user-accounts |
Foreach-Object {
[PSCustomObject]@{
user=$_;
internal=[System.Convert]::ToBoolean((pc-sc get-user-property $_ internal))
}
}
user internal
---- --------
ahmed False
guest-1 True
guest-2 True
jane False
john False
And Get-Member
tells us:
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
internal NoteProperty bool internal=False
user NoteProperty System.String user=ahmed
So what’s the point? Well, now I can wrap it in a function and use it to solve a number of admin tasks. I’ve extended the above example into a function that returns an object for each user with properties for:
- username
- internal flag
- account balance
Function get-pc-users-balance-and-account-type {
pc-sc list-user-accounts |
Foreach-Object {
[PSCustomObject]@{
user=$_;
internal=
[System.Convert]::ToBoolean((pc-sc get-user-property $_ internal));
balance=
[System.Convert]::ToSingle((pc-sc get-user-property $_ balance));
}
}
}
Papercut Ng : Web Print
And then, for instance, I can use the new function to give an extra $5.50 of credit to all internal users who have a balance less than $5.00:
get-pc-users-balance-and-account-type |
Where-Object {$_.internal -and $_.balance -le 5.0 } |
Foreach-Object {
pc-sc adjust-user-account-balance $_.user 5.5 'By Powershell';
Write-Output '$($_.user) got an extra `$5.5'
}
Tip 7: Use server-command’s get-group-members
subcommand instead of list-user-accounts
In tip 6 we found the balance and internal flag for every user account in PaperCut MF/NG, but then only processed internal users. This is often a very small subset of all the users in the system, though. We could be wasting a lot of time retrieving information we never need.
So let’s change the example a bit:
Function get-pc-
internal-users
-and-balance {
pc-sc get-group-members
'!!Internal Users!!' |
Foreach-Object {
[PSCustomObject]@{
user=$_;
internal=$True;
balance=
[System.Convert]::ToSingle((pc-sc get-user-property $_ balance));
}
}
}
Note I’ve hard-coded the internal flag …
internal=$True;
… so that the original business logic is the same:
get-pc-
internal-users
-and-balance |
Where-Object {$_.internal -and $_.balance -le 5.0 } |
Foreach-Object {
pc-sc adjust-user-account-balance $_.user 5.5 'By Powershell';
Write-Output '$($_.user) got an extra `$5.5'
}
Papercut Ng Brochure
<Aaaaaand that’s enough PowerShell tips for now — Ed>
In a future post, I’ll show you how you can use the PaperCut MF/NG health API in PowerShell to get more detailed information about the state of your application server (hint, use the Invoke-RestMethod cmdlet).
Papercut Ng App
Future Work: I’m currently trying to work out how to use the XML-RPC web services API directly from PowerShell via .NET Core. The current approach depends on .NET Foundation which will become a legacy framework at some point.