Java中有没有办法打印到特定的IPP打印机?我发现的所有示例代码和教程都集中在如何使用以下内容打印特定类型的文档:
DocFlavor flavor = DocFlavor.INPUT_STREAM.POSTSCRIPT;
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaSizeName.ISO_A4);
PrintService[] pservices =
PrintServiceLookup.lookupPrintServices(flavor, aset);
if (pservices.length > 0) {
DocPrintJob pj = pservices[0].createPrintJob();
try {
FileInputStream fis = new FileInputStream("test.ps");
Doc doc = new SimpleDoc(fis, flavor, null);
pj.print(doc, aset);
} catch (FileNotFoundException fe) {
} catch (PrintException e) {
}
}
Run Code Online (Sandbox Code Playgroud)
此代码段只是打印到找到的能够打印文档的第一台打印机.在我的情况下,我想通过其URI查找打印机,但PrintServiceLookup似乎不支持这一点.我尝试过使用a PrintServiceAttributeSet而不是PrintRequestAttributeSet添加PrinterURI属性,但这并没有返回任何打印机.我怀疑查找服务正在寻找可以更改其目标URI的打印机,而不是查找具有该URI的打印机.
作为最后的手段,我想到只是枚举所PrintService返回的所有s lookupPrintServices,但URI不在任何属性中.打印机名称在那里,但我需要URI.
对于后台,我的webapp需要根据当前用户将条形码打印到特定的打印机.每个用户都与一个打印机URI相关联,该URI指向CUPS服务器上的打印机.打印机URI是我唯一的信息,我不能限制打印机名称以匹配URI或URI的子字符串.
编辑:为了澄清一点,我不需要渲染数据,我只需要将blob复制到给定的打印机.我无法弄清楚的部分是如何通过其IPP URI识别打印机.
我没有看到任何与GNU autoconf/automake构建有关的问题,但我希望至少有一些人熟悉它.开始:
我有一个项目(我称之为myproject),包括另一个项目(供应商).供应商项目是由其他人维护的独立项目.包含这样的项目是相当简单的,但在这种情况下有一个小问题:每个项目都生成自己的config.h文件,每个文件定义标准宏,如PACKAGE,VERSION等.这意味着,在构建期间,当供应商正在构建中,我收到很多这样的错误:
... warning: "VERSION" redefined
... warning: this is the location of the previous definition
... warning: "PACKAGE" redefined
... warning: this is the location of the previous definition
Run Code Online (Sandbox Code Playgroud)
这些只是警告,暂时至少,但我想摆脱它们.我已经能够通过Google搜索获得的唯一相关信息是automake邮件列表中的这个主题,这不是很多帮助.还有其他人有更好的想法吗?
我为我的一些程序提供了反馈功能.不幸的是,我忘了包含某种垃圾邮件保护 - 所以用户可以将他们想要的任何内容发送到我的服务器 - 每个反馈都存储在一个巨大的数据库中.
一开始我定期检查这些反馈 - 我过滤掉了可用的和删除的垃圾.问题是:我每天收到900条反馈.只有4-5个真正有用,其他消息大多是2种类型的乱码:
到目前为止我做了什么:
我安装了一个过滤器来删除任何包含"asdf","qwer"等的反馈...... - >每天只有700个
我安装了一个文字过滤器来删除任何包含不良语言的东西 - >每天600(不要问 - 但那里有很多奇怪的人)
但每天400仍然太多了.所以我想知道是否有人之前已经处理过这样的问题并且知道某种算法来过滤掉无意义的消息.
真的很感激任何帮助!
我在我公司维护构建系统,目前正在使用CVS.此构建系统用于多个项目和多个CVS存储库.
每当我们有一个发布里程碑时,我们就会创建一个标记.在CVS中,这很容易:
$ cvs tag TAG_NAME
Run Code Online (Sandbox Code Playgroud)
无论CVS模块或存储库如何,该命令都可以工作,只要它在CVS工作目录中执行即可.
为了在subversion中做同样的事情,看起来我首先必须解析输出svn info以获取存储库根目录.然后我可以创建标签:
svn cp . $REPO_ROOT/tags/TAG_NAME -m"Created tag TAG_NAME"
Run Code Online (Sandbox Code Playgroud)
这当然假设svn存储库具有推荐的"trunk,tags,branches"目录结构.所以为了安全起见,我可能需要首先验证这一点.
将修订号映射到符号名称似乎需要做很多工作.有没有更好的办法?
我需要使用CXF创建一个文件上载处理程序作为REST Web服务.我已经能够使用以下代码上传包含元数据的单个文件:
@POST
@Path("/uploadImages")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadImage(@Multipart("firstName") String firstName,
@Multipart("lastName") String lastName,
List<Attachment> attachments) {
for (Attachment att : attachments) {
if (att.getContentType().getType().equals("image")) {
InputStream is = att.getDataHandler().getInputStream();
// read and store image file
}
}
return Response.ok().build();
}
Run Code Online (Sandbox Code Playgroud)
现在我需要添加对在同一请求中上传多个文件的支持.在这种情况下,image/jpeg我得到一个内容类型的附件,而不是带内容类型的附件multipart/mixed,它本身包含image/jpeg我需要的各个附件.
我已经看到了使用元数据上传多个JSON或JAXB对象的示例,但是我无法使用二进制图像数据.我已尝试直接使用MultipartBody,但它只返回multipart/mixed附件,而不是其中image/jpeg嵌入的附件.
有没有办法递归解析multipart/mixed附件以获取嵌入的附件?我当然可以得到multipart/mixed附件的输入流,并自己解析文件,但我希望有更好的方法.
UPDATE
这看起来像kludgey,但下面的代码现在已经足够好了.我希望看到更好的方式.
for (Attachment att : attachments) {
LOG.debug("attachment content type: {}", att.getContentType().toString());
if (att.getContentType().getType().equals("multipart")) {
String ct = att.getContentType().toString();
Message msg = …Run Code Online (Sandbox Code Playgroud) Java 1.5添加了一项增强功能以支持签名时间戳.据我所知,这个想法是签名的jar文件不会因为代码签名证书已过期而无效,只要文件在证书有效时签名即可.从理论上讲,这意味着我们不必在证书到期时每年重新签署和重新部署我们的应用程序.不幸的是,基于这两个论坛主题,实现中似乎存在问题:
http://forums.sun.com/thread.jspa?threadID=744677
http://forums.sun.com/thread.jspa?threadID=5309004
我即将开始对此进行测试,但我想知道是否有人成功完成了此操作,而无需在客户端上导入时间戳证书(这会破坏整个目的)?