加入收藏 | 设为首页 | 会员中心 | 我要投稿 温州站长网 (https://www.0577zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 服务器 > 搭建环境 > Unix > 正文

linux打印

发布时间:2022-10-15 14:30:58 所属栏目:Unix 来源:网络
导读: PS
PostScript是一种编程语言unix打印,最适用于列印图像和文字(无论是在纸、胶片或非物质的CRT都可)。用现今的行话讲,它是页面描述语言。它既可以像程序代码一样具有可读性,又能表示出

PS

PostScript是一种编程语言unix打印,最适用于列印图像和文字(无论是在纸、胶片或非物质的CRT都可)。用现今的行话讲,它是页面描述语言。它既可以像程序代码一样具有可读性,又能表示出可任意放大和缩小的矢量图。

PDF

PDF(Portable Document Format的简称,意为“可携带文档格式”),是由Adobe Systems用于与应用程序、操作系统、硬件无关的方式进行文件交换所发展出的文件格式。PDF文件以PostScript语言图象模型为基础,无论在哪种打印机上都可保证精确的颜色和准确的打印效果,即PDF会忠实地再现原稿的每一个字符、颜色以及图象。

Qt对打印的支持

Qt在Linux上对PS跟PDF格式都是支持的,QPrinter提供了对应的接口。

(PS格式相关的接口在Qt5中已经被废弃)

相关的具体API支持可以参考自己使用的Qt版本

void QPrinter::setOutputFormat(QPrinter::OutputFormat format)

命令详解

在Linux上,你可以使用WPS,打开,点击ctrl+p调出打印对话框,然后点击属性,就可以看到当前打印机支持的属性了。

这些属性,基本上都可以通过lp命令来使用。

lp -i request-ID [-c] [-m] [-p] [-s] [-w] [-d destination] [-f form-name] 
   [-H special-handling] [-n number] [-o options] [-p pagenumbers] 
   [-q priority-level] [-S character-set | print-wheel] [-t title] 
   [-T content-Type [-r]] [-y mode-list]

属性 属性介绍

标记选项的结束;用它来打印一个以破折号(-)开头的文件。 (-).

-E

连接到服务器时强制加密。

-U username

指定连接到服务器时要使用的用户名。

-c

在支持该功能的系统上,此选项将强制在打印之前将打印文件复制到假脱机目录。在CUPS中,打印文件始终通过IPP发送到调度程序,这具有相同的效果。.

-d destination

将文件打印到目标打印机。

-h hostname[:port]

选择备用服务器。

-i job-id

指定要修改的现有作业。

-m

作业完成后发送电子邮件。

-n copies

将打印份数设置为1至100。

-o "name=value [name=value …]"

看下面的表格

-q priority

将作业优先级从1(最低)设置为100(最高)。默认优先级为50。

-s

不要报告结果作业ID(静默模式)。

-t "name"

设置作业名称。

-H

指定何时打印作业。.

-P page-list

指定要在文档中打印的页面。

-O 属性 属性介绍

-o media=size

将页面大小设置为size。大多数打印机至少支持尺寸名称 “a4”, “letter”, “legal”.

-o landscape -o orientation-requested=4

以横向(旋转90度)打印作业。.

-o sides=one-sided -o sides=two-sided-long-edge -o sides=two-sided-short-edge

在纸张的一面或两面打印。当打印纵向(未旋转)页面时,通常使用值“双面长边”,而对于横向页面则使用“双面短边”。

-o fit-to-page

缩放打印文件以适合页面。

-o number-up=2 -o number-up=4 -o number-up=6 -o number-up=9 -o number-up=16

在每个输出页面上打印多个文档页面。

-o cpi=N

设置每英寸打印文本文件时使用的字符数。默认值为10。

-o lpi=N

设置打印文本文件时使用的每英寸的行数。默认值是6。

-o page-bottom=N -o page-left=N -o page-right=N -o page-top=N

打印文本文件时,设置页边距。默认每英寸72像素

小结 cups的一个bug

目前有社区用户反馈说,如果文件目录过深的话,wps是打印不出来文件的。吓得我赶紧看了看发现并不是wps的问题,然后跟了跟cups的源码,发现cups对pdf中title的处理只有256个字节。

超过256个字节居然就不给打印了。。。

也不做个兼容啥的,我也是服了。

而且这还是Apple维护的。。。。

代码在这里

int                    /* O - Exit status */
main(int  argc,                /* I - Number of command-line arguments (6 or 7) */
     char *argv[])            /* I - Command-line arguments */
{
  const char    *device_uri;        /* Device URI */
  char        scheme[255],        /* Scheme in URI */
        hostname[1024],        /* Hostname */
        username[255],        /* Username info */
        resource[1024],        /* Resource info (printer name) */
        *options,        /* Pointer to options */
        *name,            /* Name of option */
        *value,            /* Value of option */
        sep,            /* Separator character */
        *filename,        /* File to print */
        title[256];        /* Title string */

这是关键代码

title[256];/* Title string */

我本以为,CUPS是为了节省空间。所以就给了256个字节,还想说,嗯,节省空间。

直到我看到了

char    mailtoCc[1024];            /* Cc email address */
char    mailtoFrom[1024];        /* From email address */
char    mailtoReplyTo[1024];        /* Reply-To email address */

这就是完全扯淡了

这篇文章,算是我对上一篇Qt中的CUPS源码解析的一个补充吧。

(编辑:温州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!