vez puedo problemas para instalar imprimir impresora guardar archivos aparece agregar windows pdf printing postscript

windows - puedo - ¿Cómo envío datos a una impresora moderna? PDF, PostScript, HPGL, etc.



no puedo imprimir archivos pdf (5)

Como al OP no le gustó mi (ni ninguna otra) respuesta original lo suficientemente bien como para aceptarlo, mientras tanto, incluso otorgó una recompensa.

Permítanme intentar agregar lo que pueda haberle faltado a mi respuesta original.

"En los viejos tiempos, había dos tipos principales de impresoras: las impresoras HP que entendían las impresoras HPGL e Postscript".

Incluso en los viejos tiempos, había más tipos de impresoras, o más bien: idiomas de descripción de página ... pero PCL, HP / GL y PostScript pueden haber sido los más importantes para la mayoría de las personas que tenían que lidiar con tecnologías de impresión.

"Entonces, podría enviar su impresión en cualquiera de esos dos idiomas y la impresora convertiría su código a puntos en la página".

No, esto no funcionó en todos los casos.

Esto solo funciona cuando la impresora entiende ambos idiomas (lo que hicieron algunos de los modelos HP más caros).

Algunos modelos de impresoras (incluso en los viejos tiempos) solo entendían HP / GL. Algunos solo entendieron una versión específica de PCL (PCL, FWIW, es una familia completa de lenguajes de impresora que consta de una docena de miembros: y algunos de los más nuevos apenas tienen un terreno común genético con los más antiguos, aparte de HP). marketing elegido para llamarlos PCL6 o PCL XL ).

"Entonces, ¿cómo funcionan las impresoras modernas? ¿Puedo enviar HPGL / PCL a una impresora?"

Sí, esto funciona igual

  • Si su "impresora moderna" entiende HP / GL, puede enviarle datos HP / GL.
  • Si entiende PCL, puede enviar PCL.
  • Si entiende PostScript, puede enviar PostScript.
  • Si entiende PDF, puede enviar PDF.
  • Si entiende XPS (¿ ha oído hablar de esto?!? ), Puede enviar XPS.
  • Sin embargo, si solo entiende PCL3 (bueno, entonces no es una impresora moderna), no puede enviar PCL6e ...

Si el dispositivo entiende cualquier combinación de estos idiomas, entonces usted es libre de enviar lo que entienda.

"Ahora, como entiendo, el formato PDF es similar a Postscript, pero no es un lenguaje como Postscript y solo puede incluir ''objetos''. Entonces, por ejemplo, en Postscript puedes hacer un ciclo y decir ''imprimir este círculo 50,000'' veces, moviendo su ubicación exacta. En PDF, entiendo que no puedes hacer esto "

Tiene razón, PDF (a diferencia de PostScript), no es un lenguaje de programación . Fue una decisión de diseño, que el PDF no debería entender el bucle ni las construcciones condicionales (mientras que PostScript lo hace; PostScript es incluso Turing-completo como un lenguaje de programación, lo que significa: cualquier cosa que sea programable, puede escribirse como un programa PostScript).

Por lo tanto, si bien puede definir un círculo (o incluso un objeto gráfico muy complejo) solo una vez como un objeto PDF:

  • No puede expresar un bucle largo a través de una declaración programática muy breve que le dice al procesador que muestre este objeto durante cada iteración.
  • En su lugar, debe declarar manualmente cada iteración por separado (donde puede solicitar que se muestre el objeto prestado).

Pero no tiene razón cuando dice "el formato PDF ... es similar a Postscript" . No lo es. El PDF se deriva del mismo modelo de gráficos que PostScript había establecido originalmente. Pero eso es todo.

Las palabras clave de PDF para operadores son diferentes. La estructura de un PDF típico es completamente diferente de un PostScript.

Lo más importante es que PDF amplió ese modelo de gráficos que heredó de PostScript (además, agregó algunos otros aspectos para un documento electrónico típico). Evolucionó en varias direcciones:

  • Con el tiempo, introdujo más espacios de color.
  • Admite más tipos de fuentes.
  • Implementó funciones de ''transparencia'' para todos los objetos dibujados.
  • Se le ocurrió el concepto de "capas" ( "grupos de contenido opcionales" , OCG, en lenguaje PDF).
  • Introdujo elementos interactivos (botones, enlaces, hipervínculos, campos de formulario).
  • Admite más esquemas de compresión diferentes.
  • Puede hacer uso de un conjunto mucho más rico de metadatos de documentos.
  • Introdujo los perfiles de color ICC y una gestión de color ICC a escala completa.
  • ... más algunos más

"¿Están todas las impresoras estandarizadas en Postscript?"

No.

En todo caso, las impresoras más modernas prefieren PDF en lugar de PostScript (mientras que aún pueden mantener las capacidades de procesamiento de PostScript como una opción alternativa). Pero mejor pregúntele a su proveedor, o estudie sus manuales de marketing.

"De ser así, ¿significa eso que mi mejor opción es generar Postscript y luego enviarlo en bruto a la impresora? "

Esa nunca ha sido tu mejor opción, ¡ni siquiera en los "viejos tiempos"!

Después de todo, imprimir un trabajo más complejo que una sola página en la mayoría de los casos implica no solo solicitar el número de copias, sino ...

  • ... también quería seleccionar el tamaño del buscapersonas, tal vez incluso seleccionar una bandeja específica para la primera página (con la letra del masthead o papel de portada azul), otra bandeja para el cuerpo principal de las páginas y una tercera bandeja para la última hoja;
  • ... quería decirle al dispositivo que grapara cada conjunto, o perforar agujeros en cada hoja;
  • ... quería doblar al centro y coser a la parilla algunos trabajos para obtener folletos terminados,
  • ...Y qué no.

Estas funciones del trabajo no pueden ser necesariamente controladas por "PostScript sin procesar". Para controlar opciones de trabajos de impresión específicos con la mayoría de los modelos de impresora PostScript, usted tenía dos formas:

  1. Inserte << ...vendor-specific or generic PS-code...>> setpagedevice instrucciones << ...vendor-specific or generic PS-code...>> setpagedevice de fragmentos de PostScript en la secuencia de datos del trabajo, ya sea en documento o en niveles de página individuales.

    Qué setpagedevice específico se necesita para que una característica específica sea ejecutada por un modelo de impresora específico se define en el archivo PPD (abreviatura de Descripción de impresora PostScript ) del controlador de impresora PostScript respectivo. Este archivo .ppd debe ser proporcionado por el proveedor respectivo junto con su (s) controlador (es) de impresora. PPD es una especificación de formato de archivo definida por Adobe . En cierto modo, amplía el lenguaje PostScript y permite a los proveedores "inventar" sus propias características cuando se trata de configuraciones de trabajo complejas.

  2. Prefijo los datos de impresión reales (enviar como PostScript) con un encabezado PJL (abreviatura de Printer Job Language ), que consiste en unas pocas (o hasta varias docenas) líneas para invocar funciones específicas del trabajo.

PJL fue originalmente inventado por HP y utilizado para PCL, pero fue rápidamente adaptado por otros proveedores para otros lenguajes de impresora. Por lo tanto, hoy en día puede usar líneas de encabezado PJL para la mayoría de las impresoras que pueden imprimir PostScript, PCLxx, HP / GL o PDF, ya que es comúnmente compatible con la mayoría de los proveedores. En este caso, la última línea PJL le dice a la impresora qué idioma son los datos reales del trabajo: PostScript, PCLxxx, PDF, HP / GL, lo que sea ... mediante una declaración como:

ESC%-12345X@PJL ENTER LANGUAGE = PostScript

"Si envío Postscript, ¿tengo que decirle a la impresora de alguna manera que es Postscript de alguna manera?"

Consulte el último párrafo más arriba si arregla previamente su trabajo con un encabezado PJL.

Para una impresora PostScript pura, probablemente <<..>>setpagedevice instrucciones <<..>>setpagedevice . Y esa impresora entenderá automáticamente PostScript ...

También ayudaría si usted enumeró los modelos de impresora que tiene a su disposición.

"En Windows, conozco la forma ''estándar'' de imprimir, que es consultar las capacidades del dispositivo y solicitar un contexto de dispositivo, luego puede dibujar líneas, formas y texto usando llamadas de Windows en ese contexto".

De hecho, así es como funciona también con impresoras PostScript en Windows (bueno, los OXPS de trabajo de impresión más OXPS basados ​​en XPS u OXPS desde Windows 8 son un poco diferentes ...). Normalmente, las "capacidades del dispositivo" son conocidas y guardadas en custodia por el controlador de impresora respectivo. Cuando haya terminado de "dibujar líneas, formas y texto con llamadas de Windows", el controlador convertirá estas llamadas a PostScript y las enviará a la impresora.

Eso es diferente de cómo funciona en Linux, Unix o Mac OS X:

  • En Linux (y Unix), cada aplicación debe generar las descripciones de la página PostScript que desea enviar a la impresora por sí mismo. No hay un "controlador" que ayude a hacer eso. Si la impresora de destino final no es apta para PostScript, CUPS la convertirá automáticamente al formato de descripción de página específico del fabricante o del modelo del PostScript que recibió. ( Algunas aplicaciones pueden generar uno de los idiomas PCL).

  • En Mac OS X, las aplicaciones generalmente generan PDF como formato de cola de impresión (y CUPS autovieja este archivo a un lenguaje de impresora diferente, basado en el controlador de impresora del proveedor, que generalmente incluye un filtro CUPS de pdf-to-someting según sea necesario).

"Sin embargo, obviamente esto es extremadamente primitivo en comparación con Postscript (o HPGL / PCL)".

No entiendo por qué debería describir esto como "extremadamente primitivo" en este contexto.

"¿Hay alguna forma de que pueda comunicarme directamente con el controlador de la impresora, o decirle a Windows: ''aquí está mi código Postscript, páselo a la impresora para imprimir''?"

Como dije antes: en Windows, una aplicación normalmente no genera su código PostScript [^ 1] si quiere imprimir en una impresora PostScript, ni genera ningún otro formato específico de impresora (con la excepción del dispositivo final) siendo una impresora XPS). Por lo general, genera EMF como un formato de cola de impresión y permite que el subsistema de impresión (y el controlador de la impresora) se encargue de las conversiones que puedan ser necesarias.

¿O está diciendo: "Tengo este archivo PostScript listo para usar (generado en otro lugar) que quiero imprimir en una impresora PostScript?" Si es así, simplemente ejecute un comando como lpr -S remoteserver -P printername "-ol" jobfile.ps desde un cuadro de DOS.

Habiendo dicho eso, , hay al menos dos formas distintas de controlador de impresora que puede emplear para consultar su dispositivo de impresión:

  1. SNMP . Si su dispositivo tiene una interfaz de red (ethernet / wifi) y entiende el Protocolo de administración de red simple , puede consultarlo a través de este canal y obtener respuestas devueltas a cualquier pregunta de tipo SNMP que haga. En lenguaje sencillo (el lenguaje SNMP se ve un poco diferente):

    • ¿Cuáles son sus niveles actuales de tinta?
    • ¿Cuál es el tamaño máximo de medios que puede manejar?
    • ¿Cuántas bandejas de papel tienes?
    • ¿Cuál es el nivel de llenado de la bandeja 1?
    • ¿Cuántas páginas imprimió en su tiempo en vivo? ¿Cuántos desde el último arranque?
    • ¿Qué lenguajes de impresora puede procesar?
    • ¿Qué protocolo de transferencia de datos de impresión admite? HPJetDirect / AppSocket? LPR / LPD? IPP?
    • ¿Tiene espacio disponible en el disco duro?
    • ¿Cuánta RAM tienes?
    • ¿Qué otros clientes de impresión están conectados con usted actualmente?
    • ...y muchos más.
  2. Consultas PJL . Parte de la información anterior también se puede recuperar enviando algunas líneas de declaraciones PJL simples a la impresora (y evaluando las respuestas).

  3. Consultas de IPP El protocolo de impresión de Internet también admite consultas de las capacidades del dispositivo ( si los dispositivos pueden hablar IPP).

Una vez más: "¿Hay alguna manera de que yo pueda ... decirle a Windows: ''aquí está mi código Postscript, por favor páselo a la impresora para imprimir''?"

Incluso podría pasar por netcat.exe Windows por completo y usar la utilidad netcat.exe (a veces también llamada nc.exe ) para enviar un archivo de trabajo a una impresora:

  • Envíe un trabajo de PostScript a una impresora de red que espera en el puerto TCP 9100 para trabajos entrantes:

    cat filename.ps | netcat.exe -h printer-ip-address-or-hostname -p 9100

    Lo mismo, por supuesto, para PCL o cualquier trabajo de formato ... SI la impresora conoce este formato. El puerto TCP exacto que debe abordar depende de su modelo específico (búsquelo en el manual). La forma de crear PostScript, PCL o cualquier archivo para la impresora depende de usted.

[^ 1] ... con la excepción de algunos Programas de Adobe como Acrobat, que de hecho pueden generar su propio PostScript.

Intento entender mis opciones para comunicarme mediante programación con una impresora para obtener algo impreso del software de la aplicación. En otras palabras, lo que sucede cuando el usuario le dice a mi aplicación que quiere imprimir algo. Entiendo cómo funcionó en los "viejos tiempos" y trato de entender el mundo moderno más complejo.

En los viejos tiempos, había dos tipos principales de impresoras: las impresoras HP que entendían las impresoras HPGL e Postscript. Entonces, podría enviar su impresión en cualquiera de esos dos idiomas y la impresora convertiría su código a puntos en la página. También podría incrustar un mapa de bits como datos binarios. Por ejemplo, en HPGL (o PCL) podría dar un comando que básicamente diga "imprima este mapa de bits, y aquí están los datos ráster" seguidos de una enorme cantidad de datos binarios. Obviamente, si hiciera esto, la cantidad de datos que iría a la impresora sería mucho mayor y podría ahogar la impresora. Postscript tenía la misma habilidad. Si imprimía texto, podría decirle a la impresora que imprima el texto "xyz" en la fuente TimesNewRoman (o lo que sea) y la impresora calcularía todos los puntos por usted (lo que significaba que la impresora tenía que saber la fuente, o tenía que descargar el fuente a la impresora antes de tiempo).

Ahora, como entiendo, el formato PDF es similar a Postscript, pero no es un lenguaje como Postscript y solo puede incluir "objetos". Entonces, por ejemplo, en Postscript puedes hacer un ciclo y decir "imprimir este círculo 50,000 veces", moviendo su ubicación exacta. En PDF, entiendo que no puede hacer esto, debe especificar cada círculo como un "objeto" separado.

Entonces, ¿cómo funcionan las impresoras modernas? ¿Todavía puedo enviar HPGL / PCL a una impresora? ¿Están todas las impresoras estandarizadas en Postscript? Si es así, ¿significa eso que mi mejor opción es generar Postscript y luego enviarlo en bruto a la impresora? Si envío Postscript, ¿tengo que decirle a la impresora de alguna manera que es Postscript de alguna manera?

En Windows, conozco la forma "estándar" de imprimir, que es consultar las capacidades del dispositivo y solicitar un contexto del dispositivo, luego puede dibujar líneas, formas y texto usando llamadas de Windows en ese contexto. Sin embargo, obviamente esto es extremadamente primitivo en comparación con Postscript (o HPGL / PCL). ¿Hay alguna forma de que pueda comunicarme directamente con el controlador de la impresora o decirle a Windows que "aquí está mi código Postscript, páselo a la impresora para imprimirlo"?


Si desea automatizar por completo el proceso de impresión, instale FolderMill ( http://www.foldermill.com/ ). Este programa convierte automáticamente documentos impresos al formato deseado, elige una impresora gratuita y genera un trabajo de impresión.


En un entorno de Windows, el formato común es WMF. Archivo Windows Meta Un WMF es una combinación de vector y mapa de bits.

El formato WMF fue creado por MS para trabajar con Windows GDI para restaurar la imagen. Los archivos WMF contienen todo lo necesario para reconstruir una imagen, por lo que se pueden convertir a cualquier otro formato gráfico.

Los fabricantes de impresoras generalmente crean su propio conjunto de comandos de impresora. Pueden optar por ir con un estándar de facto y hacer un trato con el titular de la patente / copyright.

Si usted fabrica una impresora Postscript, su buceador convierte WMF en Postscript.

Una aplicación de Windows, a través de la API GDI de Windows, crea metadatos (WMF) y el controlador de Windows, escrito por el fabricante de la impresora, traduce el WMF a sus propios comandos de impresora.

Microsoft, hace un año, ayer (15 de mayo de 2014), lanzó la especificación WMF en el dominio público: Windows Metafile Format PDF

Cuando tenga datos "en bruto" (por ejemplo, Postscript, HPGL) que la impresora interpretará correctamente, debe omitir el controlador de Manufacturers.

Para eludir el controlador de la impresora, utilice el controlador Genérico / Sólo texto.

Esto elimina el controlador de la imagen y luego puede enviar los "datos brutos".

A continuación, debe enviar todos los códigos producidos por el controlador que estaban destinados a facilitar su trabajo.


Pienso en el pdf como postdata compilada, básicamente el mismo material, si no es lo mismo, solo uno se compila en blobs binarios y el otro es ascii.

No, no todas las impresoras hablan postscript, afortunadamente, tienden a cobrar más por eso cuando puedes ejecutarlo gratis en tu computadora y usar menos recursos e imprimir más rápido. (o en una cola de impresión barata)

PCL es bastante común en impresoras que no son de HP y HP. Pero no hay una respuesta universal. Todavía tiene que ir a la impresora por impresora y ver cuál admite y / o qué se compró para agregarlo y luego, de esa lista, lo que el administrador ha habilitado en ella. luego, por supuesto, las versiones de cualquier idioma son habladas.

de esto se trata CUPS. una forma de abstraer y ocultar esos detalles.


''Entonces, por ejemplo, en Postscript puedes hacer un ciclo y decir'' imprimir este círculo 50,000 veces '', moviendo su ubicación exacta. En PDF, entiendo que no puede hacer esto, debe especificar cada círculo como un "objeto" separado.

En realidad, la verdad es un poco más hacia el término medio entre los dos extremos que describes.

  1. Es cierto: a diferencia de PostScript, PDF no es un lenguaje de programación (mucho menos un completo de Turing), y no se pueden definir "bucles".

  2. Pero también, no tiene que especificar cada círculo (o imagen incrustada, u otro objeto gráfico) por separado. Puede definir cómo dibujar un círculo (o imagen, o lo que sea) una vez, y luego volver a usar esa definición en otros lugares de la página o el documento PDF. Esto se llama "hacer referencia a un objeto". Cuando reutiliza un objeto, puede establecer diferentes propiedades de forma diferente (color, escala, rotación) cambiando algunas definiciones "ambientales" actuales (como el estado de gráficos que incluye el CTM , la matriz de transformación actual ).

Acerca de algunos de sus otros puntos:

  • No, nunca hubo solo dos tipos de impresoras, HPGL y PostScript.

  • Incluso en los viejos tiempos, había una docena o más de ''lenguajes de impresora'' diferentes. PCL era más popular incluso que HPGL. No olvide todas las invenciones de propiedad de diferentes lenguajes de impresora. ¿Alguna vez escuchó sobre AFP , Advanced Function Printing ? Este lenguaje impreso, ¡y sigue imprimiendo! - más hojas de papel que PostScript. Ya no es de propiedad exclusiva, pero fue inventado por IBM para la impresión de host, ejecuciones laaaarge de datos variables, principalmente con fines de facturación ... ¿Has oído hablar de ESC / P? KPDL? XPS?

  • Sí, aún puede enviar HPGL a una impresora, pero no a todas las impresoras. La impresora siempre debe estar habilitada para al menos uno de los idiomas que puede generar y enviar.

  • Sí, actualmente hay modelos de impresoras que pueden consumir PDF directamente. Pero todavía no son del tipo predominante. Algunos de ellos "hacen trampa" y aún tienen como principal intérprete integrado un motor PostScript: estos toman el PDF y lo convierten en primer lugar en PostScript. Otros pueden procesar PDF sin recurrir a PostScript.

"En Windows, conozco la forma" estándar "de imprimir, que es consultar las capacidades de los dispositivos y solicitar un contexto de dispositivo, luego puedes dibujar líneas, formas y textos usando llamadas de Windows en ese contexto".

No asuma que el término ''contexto del dispositivo'' significa que Windows habla directamente con el hardware de la impresora para consultar las capacidades y solicitar el contexto del dispositivo. A veces lo hace, a veces no. Siempre se basa en un software llamado "controlador de impresora" (que también controla a qué idioma de impresora se deben convertir los datos). El controlador de la impresora puede consultar el dispositivo y preguntar "¿Tiene una unidad dúplex? ¿Tiene un dispositivo de grapado?" y luego generar el contexto del dispositivo requerido para el trabajo.

Solo un enfoque muy moderno, IPP Everywhere , desarrollado por el '' Printer Working Group '' , podrá deshacerse de la mayoría de lo que tenían que hacer los antiguos controladores de impresora específicos del modelo, y comenzará a depender principalmente de la interrogación directa del dispositivo antes de finalizar ''sin conductor'' los datos de impresión exactos para pasar al dispositivo físico.

Pero IPP Everywhere aún no es muy popular, ni con los proveedores, ni con los administradores, ni con los usuarios. Pero lo hará, una vez que se olviden las computadoras y el 95% de los dispositivos informáticos serán súper móviles ...