PaperCut es el sistema de control de impresión más extendido en oficinas, y el único de los dos que sabe de dinero por página. La integración usa su API de servicios web, que es XML-RPC, no REST.

1. Preparar PaperCut (los dos pasos que todos olvidan)

  1. Token: en Options → Advanced → Config editor, poné un valor en auth.webservices.auth-token. Ese token es la contraseña de toda la API.
  2. Lista blanca de IPs: en Options → Advanced, añadí la IP del servidor de Boris a «Allowed XML Web Services callers». Por defecto solo se permite 127.0.0.1, así que sin este paso todo falla, incluso con el token correcto.

Si PaperCut y Boris no están en la misma red, hace falta una VPN. No publiques el puerto 9191 en internet.

2. Configurar en Boris

  • Server URL: https://servidor:9192 (o http://servidor:9191). Boris añade /rpc/api/xmlrpc.
  • Auth token: el del paso anterior.
  • Prefijo de usuario: por ejemplo cw-. Hace que las cuentas que crea Boris se distingan de tus socios de un vistazo.
  • Aceptar certificado autofirmado: normalmente sí, porque PaperCut genera el suyo. Solo con el servidor en red interna.
  • Cuota por reserva: páginas o crédito que recibe cada reserva.

Guardá → Probar conexión (Boris lista tus impresoras) → Importar impresoras.

Qué hace Boris dentro de PaperCut

  • Comprueba si la cuenta existe (api.isUserExists) y, si no, crea un usuario interno con api.addNewInternalUser. Los usuarios internos son los que no vienen de Active Directory: exactamente lo que es un invitado de día.
  • Pone el saldo con api.setUserAccountBalance. Usa set y no adjust a propósito: si el cron reintenta, el invitado no acaba con crédito doble.
  • Al revocar, marca disabled-print y deja el saldo a cero. No borra la cuenta, para no perder el histórico que quizá necesites para facturar el mes pasado.
  • El consumo sale de las propiedades print-stats.page-count y print-stats.job-count, más el saldo restante.

Cosas a tener en cuenta

  • PHP dejó de traer la extensión xmlrpc en la versión 8, así que Boris arma y parsea el XML por su cuenta. Si ves un error de XML mal formado, casi siempre es que respondió otra cosa (un proxy, un login HTML), no PaperCut.
  • Un fallo de token o de IP no da 401: devuelve un fault de XML-RPC. Boris te muestra el texto tal cual, que suele decir exactamente qué falta.
  • El PIN que genera Boris sirve como código en la impresora si tenés activada la liberación segura.
  1. Open the relevant screen Go to the section where this feature is configured.
  2. Review the required fields Fill in the data that Boris asks for in that screen.
  3. Save and verify Save the changes and check that the feature works as expected.