Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >java -将postscript直接发送到网络打印机时出现"ps:堆栈下溢“

java -将postscript直接发送到网络打印机时出现"ps:堆栈下溢“
EN

Stack Overflow用户
提问于 2018-02-13 17:51:43
回答 1查看 260关注 0票数 1

我编写了一段Java代码,通过套接字将PDF格式的postscript脚本发送到网络打印机。

这些文件打印得很完美,但每个作业都附带一到两页额外的文本,比如ps: stack underflowerror undefined offending command

一开始,我认为PDF2PS进程有问题,所以我尝试了这个PS Files中的2个PS文件。但问题仍然存在。

我还用GhostView验证了ps文件。现在我认为代码可能有问题。代码不会抛出任何异常。

这款打印机名为东芝e-Studion5005AC,支持PS3和PCL6。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    File file = new File("/path/to/my.ps");

    Socket socket = null;
    DataOutputStream out = null;
    FileInputStream inputStream = null;
    try {
        socket = new Socket(printerIP, printerPort);
        out = new DataOutputStream(socket.getOutputStream());
        DataInputStream input = new DataInputStream(socket.getInputStream());
        inputStream = new FileInputStream(file);
        byte[] buffer = new byte[8000];

        while (inputStream.read(buffer) != -1) {
            out.write(buffer);

        }

        out.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-13 19:49:38

您正在将整个缓冲区写入输出流,而不管有多少实际内容。这意味着当你最后一次写buffer时,它很可能在缓冲区的末尾有一堆来自上一次迭代的内容。

示例

例如,假设您有以下文件,并使用大小为10的缓冲区:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1234567890ABCDEF

在第一次inputStream.read()调用之后,它将返回10,在缓冲区中,您将看到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1234567890

在第二次inputStream.read()调用之后,它将返回6,在缓冲区中,您将看到:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 ABCDEF7890

在第三次调用inputStream.read()之后,它将返回-1,您将停止读取。

打印机套接字最终将接收这些数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1234567890ABCDEF7890

这里的最后一个7890是打印机不能理解的额外位,但它可以成功地解释第一个1234567890ABCDEF

修复

您应该考虑inputStream.read()返回的长度

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        byte[] buffer = new byte[8000];
        for (int length; (length = inputStream.read(buffer)) != -1; ){
            out.write(buffer, 0, length);
        }

还可以考虑使用try-with-resources来避免未关闭的流出现问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48772753

复制
相关文章
iOS-将项目上传到 GitHub 上
创建项目 进入GitHub主页,创建新代码仓库,注册相关事宜不再赘述(见下图): 二、给你的新代码仓库起名称(可以是项目的名称或者 Demo 的文件名称)--->给你仓库添加描述(方便别人理解用途)--->点击“创建”(见下图): 步骤二.png 三、点击“创建”后会生成相应的 github 网址,这个网址就是以后上传项目的地址(见下图): 步骤三.png 四、接着用 Xcode 创建工程,记得勾选创建 Git 代码仓库(见下图): 步骤四.png 五、在导航栏找到“配置工程”选项(见下
用户1890628
2018/05/10
2.6K0
iOS上架及ipa包上传到AppStore
由于苹果的机制,在非越狱机器上安装应用必须通过官方的Appstore,开发者开发好应用后上传Appstore,也需要通过审核等环节。AppCan作为一个跨主流平台的一个开发平台,也对ipa包上传Appstore作了支持。本文从三个流程来介绍如何实现AppCan在线编译出ipa包,以及上传到苹果Appstore。
iOS Magician
2023/03/21
9860
iOS上架及ipa包上传到AppStore
IOS 上传到后台json数据
今天后台让我传一个类似下图 后台要求的数据格式 我以前还没有这样传过数据。不知道该怎么传,在网上搜了一下,很感谢www.cnblogs.com/yang-guang-girl/p/5642333.ht
honey缘木鱼
2018/06/13
8280
iOS UIProgressView控件用法
- (instancetype)initWithProgressViewStyle:(UIProgressViewStyle)style;
珲少
2018/08/15
5560
iOS UICollectionView的用法
UICollectionViewDataSource,UICollectionViewDelegateFlowLayout
码客说
2019/10/22
1.3K0
【iOS】将代码上传到pod创库
可以看到我们指定source_files指定在PPKit/Classes文件夹下的所有文件,所以我们的源码都放在这里就可以了
MapleYe
2020/03/30
8150
【iOS】将代码上传到pod创库
iOS-将项目上传到 Git.OSChina 上,创建自己的私有项目
为什么要将项目上传到 Git.OSChina 上 GitHub上创建私有项目是收费的 git.oschina上可以创建1000个免费的项目 服务器在国内,速度比GitHub快 ---- 登录 git.oschina.net ---- 配置 SSHKey 为什么要配置SSHKey 客户端与服务器进行通信的时候要保证安全,就需要在客户端配置私钥,在服务端配置公钥 SSHKey就是来配置公钥和私钥 客户端负责生成私钥和公钥 将公钥传递给服务器 工作原理 客户端发起一个请求到服务端 服务端接到请
用户1890628
2018/05/10
1.5K0
如何将IDEA上的项目上传到GitHub上?
最近,找到了一个去年用Springboot完成的一个web类博客项目,于是想到了上传到GitHub上开源分享。相信还有一部分刚入"IT"圈的编程小白(请忽略我也是一个菜鸟…),于是正好利用这个机会做一期记录。
大数据梦想家
2021/01/27
6.8K0
如何将IDEA上的项目上传到GitHub上?
UIProgressView 当前进度显示圆角
也就是把 UIProgressView的trackTintColor设置为透明。假如进度条没有填满是效果是这样的
赵哥窟
2018/09/13
2.8K0
UIProgressView 当前进度显示圆角
flutter中多flavors方案以及添加firebase​
有想做海外市场的同学们,可能需要用到firebase。今天我们讲讲怎么使用「FlutterFire CLI」添加 firebase以及如何设置「flavors」
用户1974410
2022/09/20
9.9K0
flutter中多flavors方案以及添加firebase​
ios打包ipa文件并上传到托管平台
当我们开发完app后,需要将ipa/apk提交给测试人员测试,然后才能上线。下面就来看一下如何打包ipa文件,并上传托管平台。 做过ios开发的童鞋都知道,ios为开发者提供了描述文件有2类,有说是3种(说的是iOS App):在Development类下就一种,用于真机调试Debug模式的描述文件;然而在Distribution类下,有2种描述文件。正常情况下,我们会使用App Store——Create a distribution provisioning profile to submit your
xiangzhihong
2018/01/26
2.3K0
ios打包ipa文件并上传到托管平台
当我们开发完app后,需要将ipa/apk提交给测试人员测试,然后才能上线。下面就来看一下如何打包ipa文件,并上传托管平台。 做过ios开发的童鞋都知道,ios为开发者提供了描述文件有2类,有说是3种(说的是iOS App):在Development类下就一种,用于真机调试Debug模式的描述文件;然而在Distribution类下,有2种描述文件。正常情况下,我们会使用App Store——Create a distribution provisioning profile to submit your
xiangzhihong
2018/02/06
2.4K0
ios打包ipa文件并上传到托管平台
git把本地文件上传到github上的步骤
1.清除clean 2.返回上一级cd .. 3.克隆仓库地址git clone+地址 4.添加忽悠文件vim .gitignore 5查看cat .gitignore 6.进入到test,并且添加所有的文件:cd test    git add. 7.查看状态,绿色git status 8.提交git commit  -am "wangtingwx" 9.查看状态 10.放到github:   ----------git  push origin master Administrator@PC-20160
王小婷
2018/05/31
5.3K0
iOS APP打包上传到APPstore的最新步骤
一、前言: 作为一名iOS开发者,把辛辛苦苦开发出来的App上传到App Store是件必要的事。但是很多人还是不知道该怎么上传到App Store上 下面就来详细讲解一下具体流程步骤。 二、准备: 一个已付费的开发者账号(可分为): 账号类型分为个人(Individual) 公司(Company) 企业(Enterprise) 高校(University)四种类型 每年资费分别为99、99、
iOS Magician
2023/03/22
9910
iOS APP打包上传到APPstore的最新步骤
打包上传到服务器图片不显示
assetsPublicPath:'/' 改为:assetsPublicPath:'./' (加一个点变为相对路径)
〆 千寻、
2020/03/10
2K0
iOS流布局UICollectionView系列二——UICollectionView的代理方法
        在上一篇博客中,介绍了最基本的UICollectionView的使用和其中我们常用的属性和方法,也介绍了瀑布流布局的过程与思路,这篇博客是上一篇的补充,来讨论关于UICollectionView的代理方法的使用。博客地址:
珲少
2018/08/16
2.1K0
iOS流布局UICollectionView系列二——UICollectionView的代理方法
iOS - Swift UICollectionView横向分页的问题UICollectionView横向分页的问题
UICollectionView横向分页的问题 情况 直接看图 滚前 滚后 已经设置collectionView的isPagingEnabled为true了,可是出现了这种情况,原因就是collect
LinXunFeng
2018/06/29
1.3K0
iOS14开发-UIView
在 iOS 13 中引入了新的 API — Diffable Data Source,它不仅能够驱动 UITableView 和 UICollectionView,而且可以更简单高效的实现数据的刷新。
YungFan
2021/01/21
11.9K0
Git在Idea中的配置(本地项目上传到码云或者Github)
安装结束后,查看Git是否正确的安装: cmd下输入git --version,若成功弹出,则显示安装成功。
VIBE
2022/12/02
1.1K0
微信小程序云存储(文件上传到云端)
  我们直到,云开发控制台更多的是对项目中的初始文件的操作管理,例如项目的Logo图片可以通过云开发控制台提起上传到云端。项目在执行的过程中也会涉及文件的操作,例如用户上传图片的操作,这时就需要用到云开发存储API。
别团等shy哥发育
2023/02/25
6.6K0
微信小程序云存储(文件上传到云端)

相似问题

以百分比显示iOS中的UIProgressView

30

无法将视频上传到iOS 13上的Firebase存储

12

是否将文件上传到服务器以在iPhone中显示UIProgressView?

31

上传到Firebase存储失败

28

在Objective中如何在UIProgressView的didSelectItemAtIndexPath委托上显示UICollectionView?

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文