在Java程序中实现高精度打印

Java高精度数值运算编程 在Java编程中,处理大整数或高精度数值运算是一项重要的任务。为了解决这个问题,Java提供了BigInteger和BigDecimal类,它们能够处理任意精度的整数和小数运算。本文介绍了在Java中进行高精度数值运算的方法,通过使用BigInteger类和BigDecimal类,我们可以处理大整数和高精度小数的运算。这些类提供了丰富的方法来执行加法、减法、乘法、除法等运算操作,并且能够处理任意精度的数值。然后,我们使用BigDecimal提供的方法进行加法、减法、乘法和除法运算,并将结果打印输出。 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度了。于是可耻的使用着丑陋的缺省打印精度几年后,终于找到了解决方法,不知道该高兴还是悲伤,其原理说出来也是非常的简单:   提高打印精度,其实就是把本来是A3纸的内容往A4纸里画,也就是说,打印区域(这里对应着Java里的Graphics对象)需要缩小,然后由于缺省情况下打印是照72DPI来打的,不做改变的话,打印内容也会跟着变小。这样就不是我们想要的效果了,所以还得把打印内容成比例放大。一个缩小,一个放大,于是画完后,在指定大小的纸张内,便容纳了比以往更多象素的内容,这下世界总算完美了。   以上做法形象的说应该是这样:把需要产生的图形对象先放大,画在一张“纸上”,然后整体缩小,这样精度就提高了。   tips 1:在一般企业报表表格打印中,使用144DPI得到的表格线的宽度看起来最舒服。   tips 2:现在号称600DPI的打印机其实是576DPI,如果想使用这个分辨率的精度,需要用好一点的纸张,因为已经到极限了,纸张稍差点,打印墨粉就沾不上,导致线体残缺。   附源码(修改分辨率就改动变量iResMul就好): import java.awt.*; import java.awt.print.*; public class MyPrintableObject implements Printable { public int iResMul = 1; // 1 = 72 dpi; 4 = 288 dpi public int print(Graphics g, PageFormat pf, int iPage) throws PrinterException { final int FONTSIZE = 12; final double PNT_MM = 25.4 / 72.; if (0 != iPage) return NO_SUCH_PAGE; try { int iPosX = 1; int iPosY = 1; int iAddY = FONTSIZE * 3 / 2 * iResMul; int iWdth = (int) Math.round(pf.getImageableWidth() * iResMul) - 3; int iHght = (int) Math.round(pf.getImageableHeight() * iResMul) - 3; int iCrcl = Math.min(iWdth, iHght) - 4 * iResMul; Graphics2D g2 = (Graphics2D) g; PrinterJob prjob = ((PrinterGraphics) g2).getPrinterJob(); g2.translate(pf.getImageableX(), pf.getImageableY()); g2.scale(1.0 / iResMul, 1.0 / iResMul); g2.setFont(new Font("SansSerif", Font.PLAIN, FONTSIZE * iResMul)); g2.setColor(Color.black); g2.drawRect(iPosX, iPosY, iWdth, iHght); g2.drawLine(iPosX, iHght / 2 iWdth / 50, iPosX iWdth, iHght / 2 - iWdth / 50); g2.drawLine(iPosX, iHght / 2 - iWdth / 50, iPosX iWdth, iHght / 2 iWdth / 50); g2.drawOval(iPosX 2 * iResMul, iHght - iCrcl - 2 * iResMul, iCrcl, iCrcl); iPosX = iAddY; iPosY = iAddY / 2; g2.drawString("PrinterJob-UserName: " prjob.getUserName(), iPosX, iPosY = iAddY); g2.drawString("Betriebssystem: " System.getProperty("os.name") " " System.getProperty("os.version"), iPosX, iPosY = iAddY); g2 .drawString("Java-Version: JDK " System.getProperty("java.version"), iPosX, iPosY = iAddY); g2.drawString("Width/Height: " dbldgt(pf.getWidth()) " / " dbldgt(pf.getHeight()) " points = " dbldgt(pf.getWidth() * PNT_MM) " / " dbldgt(pf.getHeight() * PNT_MM) " mm", iPosX, iPosY = iAddY); g2.drawString("Imageable Width/Height: " dbldgt(pf.getImageableWidth()) " / " dbldgt(pf.getImageableHeight()) " points = " dbldgt(pf.getImageableWidth() * PNT_MM) " / " dbldgt(pf.getImageableHeight() * PNT_MM) " mm", iPosX, iPosY = iAddY); g2.drawString("Imageable X/Y: " dbldgt(pf.getImageableX()) " / " dbldgt(pf.getImageableY()) " points = " dbldgt(pf.getImageableX() * PNT_MM) " / " dbldgt(pf.getImageableY() * PNT_MM) " mm", iPosX, iPosY = iAddY); g2.drawString("versuchte Druckaufl sung: " 72 * iResMul " dpi", iPosX, iPosY = iAddY); } catch (Exception ex) { throw new PrinterException(ex.getMessage()); } return PAGE_EXISTS; } private static double dbldgt(double d) { return Math.round(d * 10.) / 10.; // show one digit after point } public static void main(String[] args) { PrinterJob pj = PrinterJob.getPrinterJob(); pj.setPrintable(new MyPrintableObject()); if (pj.printDialog()) { try { pj.print(); } catch (PrinterException e) { System.out.println(e); } } } }
Java集成Zebra标签打印机实战指南 工业级标签打印系统对通信稳定性要求极高,任何数据丢失或延迟都可能导致标签内容错误甚至生产线停滞。为此,选择合适的串行通信技术栈至关重要。早期Java开发者主要依赖Sun Microsystems发布的javax.commAPI(也称Java Communications API),该API提供了基本的串口和并口访问能力,但由于其仅官方支持Solaris和Linux系统,且长期未更新,导致在Windows平台上的兼容性极差,最终被社区广泛弃用。 阅读详情

相关推荐

Java打印小票自定义小票纸张大小,分辨率

自定义小票打印,通过打印机名称打印,设置纸张大小,分辨率问题

java调用打印机 兼容各种驱动版

book.append((graphics, pageFormat, pageIndex) -> {//通过一个匿名内部内实现Printable接口,不懂的自行查看jdk8的新特性。throw new CommonException("500", "打印失败,未找到可用打印机,请检查。throw new CommonException("500", "打印失败,未找到打印机,请检查。//也可以通过file构建一个本地图片File对象传递给ImageIO.read()方法。// 获取打印服务对象。

qq_33807175的博客 989

用Keil5给CH552G编程:手把手配置8051开发环境+LED闪烁实战

本文详细介绍了如何使用Keil5为CH552G单片机配置8051开发环境,并完成LED闪烁实战。从获取必要软件、安装WCH器件库到创建工程、编写程序及烧录,手把手指导开发者避开常见陷阱,特别适合从STC转向CH552G的开发者。

weixin_30733003的博客 539

java设置png dpi_设置PNG图片DPI 信息,保存为PDF(使用Magick),与OpenCV转换

目录任务描述我有这样一个需求,读取一张格式为png 或者 jpeg 的图片, 保存为可以可以直接打印的大小,要求编为一个小程序。因为通常情况下图像大小如1024*512 是像素尺寸,要想打印出来是需要设置 dpi(dots per inch),意思是每英寸上有多少个点(像素)。为了打印方便还可以保存为pdf。解决方案magick++magick++ 是著名开源图片处理库imagemagick提供的...

weixin_39637370的博客 969

ABAP - Function ALV 11 - 单元格下拉框

【代码】ABAP - Function ALV 11 - 单元格下拉框。

HeathlX的博客 1817

舵机PWM信号转互斥继电器开关信号

-----------------本文由“麦粒电子”撰写,并提供相应产品服务。---------------- 叙述 上次的PWM转继电器开关方案得到大家的不少好评(博客链接),但是发现有些玩家需要一路PWM同时去控制两路继电器开关通断,并且两者是互斥的,好去控制两种不同的负载。所以就继续升级了如下的模块。 正常的控制部件顺序这样:遥控器按钮拨动,遥控器接收机相应通道PWM值变化,PWM转开关模块检测PWM值发生变化从而驱动相应机械继电器触点吸合释放。本模块的两个继电器动作是互斥的,也就是不会同时吸合。

Mai_LiElectronic的博客 1635

使用Java的PrinterJob实现调用打印机打印

首先我们在使用打印机的话我们需要得到我的这个相关的一些数据,然后我们需要实例化我的这个book对象,这个book对象主要是把我的这个paperFormat对象和我的这个实体类数据的对象放入到我的这个book对象当中,那么我的paperFormat主要是用来设置我的这个打印机打印的顺序,那么说到顺序他一共有三种顺序,第一种就是从下到上从左到右打印,第二种就是从上到下从左到右的方向打印,第三章就是从上到下,从右到左的方向打印,相关的底层源代码如下 设置完我的这个打印方向了之后,我就需要实例化一个Pape.

weixin_51123481的博客 6783

模型剪枝实战 | Torch-Pruning 库在YOLOv8上的应用指南

本文详细介绍了如何使用Torch-Pruning库对YOLOv8模型进行结构化剪枝,以实现模型“瘦身”。通过DepGraph(依赖图)技术自动处理层间依赖,确保剪枝安全。文章提供了从环境搭建、核心原理理解到完整剪枝流程的实战指南,并强调了剪枝后的微调与性能评估,帮助开发者在保持精度的同时显著提升模型推理速度。

weixin_29046035的博客 505

java直接调用打印机打印pdf

【代码】java直接调用打印机打印pdf。

weixin_52183261的博客 1104

西门子S7-200 SMART PLC高速计数器与增量式编码器实战配置指南

在工业自动化控制系统中,传感器是将物理量转换为电信号的关键组件,其中编码器作为核心的位置与速度检测元件,其工作原理基于光电或磁电效应,将机械位移转换为脉冲序列。增量式编码器通过输出相位差90度的A/B两相脉冲,不仅能实现精确的位移测量,还能通过相位关系自动判别运动方向,并通过倍频技术提升分辨率。其技术价值在于为PLC等控制器提供了实时、高精度的位置反馈,是实现闭环控制、提升系统精度与可靠性的基础。在包装机械、物料输送、绕线设备等应用场景中,编码器与PLC高速计数器的协同工作是实现精确定位、定长切割与速度控制

weixin_29178069的博客 400

VC++车牌识别系统:图像处理与模式识别实战指南

计算机视觉是人工智能的重要分支,其核心原理是通过算法让计算机“看懂”图像内容。在工程实践中,图像处理与模式识别技术是实现视觉应用的基础,它们通过灰度化、边缘检测、特征提取等步骤,将原始像素转换为可理解的信息。这些技术的价值在于能够替代人眼完成自动化、高精度的识别任务,广泛应用于智能交通、安防监控和工业检测等领域。以车牌识别为例,它综合运用了图像预处理、车牌定位、字符分割和字符识别等关键技术,其中车牌定位常采用基于边缘检测和颜色特征的方法,而字符识别则涉及模板匹配或机器学习分类。在VC++开发环境中,结合Op

weixin_28465009的博客 281

java打印计算机_在Java程序中实现高精度打印

在Java环境中,可以使用 java.awt.Toolkit.getScreenResolution()可以得到屏幕每英寸的象素数,但是好像没有什么方法能知道某一台打印机的分辨率,更别提去控制打印粒度了。于是可耻的使用着丑陋的缺省打印精度几年后,终于找到了解决方法,不知道该高兴还是悲伤,其原理说出来也是非常的简单提高打印精度,其实就是把本来是A3纸的内容往A4纸里画,也就是说,打印区域(这里对应着...

weixin_42352981的博客 175

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

摇骰子、抽奖转盘酒桌游戏 人生重启模拟器小程序源码分享-开通流量主躺着赚钱

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 1652

在Java程序中实现高精度打印-Java基础-Java-编程开发

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/javascript"

java专栏 414

调节桌面图标大小的方法(编程)

如果你对其他操作系统或编程语言有类似的需求,可以根据具体的情况进行相应的调整和搜索相关的库和方法。在编程中,我们可以使用各种桌面应用程序来调节桌面图标的大小。库提供的函数,我们获取了桌面图标的窗口句柄,并使用Windows消息发送方式设置图标的大小。你可以根据自己的需求修改代码中的图标大小值,并在运行代码后观察桌面图标的变化。函数并传入所需的图标大小,这里设置为48x48像素。首先,我们需要使用Python的第三现的方法。首先,我们需要使用Python的第三方库。首先,我们需要使用实现的方法。

CyberFlare的博客 439

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

整数高精度除法_C ++程序,用于计算整数的高精度除法

整数高精度除法arithmetic operations in programming算术运算 languages are limited by precision accuracy. That means you will not get an 语言受精度限制。 这意味着您不会得到 exact answer but a rounded-close answer. For example, i...

culing2941的博客 524

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Java打印代码执行耗时

Java打印代码执行耗时 在软件开发中,性能优化是一个不可忽视的环节。了解代码的执行耗时,可以帮助开发人员识别瓶颈,优化程序的性能。本文将介绍如何在Java中打印代码执行的耗时,包括常用的方法和代码示例,帮助你更好地掌握这一技巧。 什么是代码执行耗时 代码执行耗时是指从代码开始执行到执行结束所需要的时间,通常以毫秒或微秒为...

weixin_40817012的博客 950

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

贝叶斯统计 [韦来生编]

贝叶斯(Bayes)统计是近几十年来迅速发展起来的数理统计的一个重要分支。贝叶斯方法与经典统计方法的主要不同之处是进行统计推断时除了利用样本信息外,还要利用参数的先验信息,因此可以提高统计推断或统计决策的效果。它在经济、金融、生物、医学、自然科学和社会科学等许多领域具有广泛的应用。贝叶斯方法的研究已渗透到了统计学的几乎所有领域。作者在给中国科学技术大学概率论与数理统计专业本科生开设的“数理统计”课程中有一章专门讲授“贝叶斯方法和统计决策理论”,近十年来也给中国科学技术大学概率统计专业研究生开设过几次“贝叶斯分析”课。本书是在对过去讲稿的内容作了适当的增减和调整的基础上完成的。  本书共分六章。第1章是绪论,介绍了贝叶斯统计的若干基本概念,同时对必要的数理统计的基础知识有重点地作了回顾。第二章介绍了确定先验分布的若干可供选择的方法。第三章介绍了几类常见统计模型参数的后验分布的主要结果和计算方法。第四章和第五章分别介绍了“贝叶斯统计推断”和“贝叶斯统计决策”的内容。第六章介绍了贝叶斯统计计算的若干方法,包括蒙特卡洛方法和马尔可夫链蒙特卡洛(MCMC)方法以及相关统计软件的简介。本书的每一章附右大量的例题和习题,书末附有常用的几个表格和部分习题解答供读者查用。  大约可在54学时内讲授本书的第1章至第六章的主要内容,教师可根据学时需要选讲本书第1章至第六章的部分内容。书中标“*”号的章节可略去不讲,留给读者作为阅读材料。第六章例题中的R代码和部分例题的数据文件等可从作者个人主页下载。  作者在编写本书的过程中参考了J.O.Berger教授的《统计决策论及贝叶斯分析》和茆诗松教授编写的《贝叶斯统计》等书中的一些内容,以及《贝叶斯分析》一书中由张伟平博士编写的有关贝叶斯统计计算的一些内容。在此表示衷心感谢。  本书编写准备过程中,中国科学技术大学统计与金融系的几个研究生帮助完成了本书部分中文的录入和排版,作者对他们的辛勤工作表示真诚的感谢。高等教育出版社为本书的出版给予了大力支持。在此一并致谢。

非负的高精度整数类实现

在一些竞赛中,经常会使用到一些高精度的大数据类,在这里我送给大家一个高精度的整数类 #include #include #include #include #include using namespace std; #define MAX 2000 //非负的大整数类 class Bigint { public:     int len;//长度

love coding 843

java北大oj1001_北大ACM1001题-Exponentiation(求高精度幂)

从昨天开始训练ACM题目,每题尽量用C++和java编写,为了熟悉算法和java语言。题目是这样的:求高精度幂 Time Limit: 500MS Memory Limit: 10000K Total Submissions: 44697 Accepted: 10245Description对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。现在要你解...

weixin_29867607的博客 396

JAVA:实现二个数字的通用根算法(附带源码)

JAVA:实现二个数字的通用根算法(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 1087

北大ACM1001题-Exponentiation(求高精度幂)

从昨天开始训练ACM题目,每题尽量用C++和java编写,为了熟悉算法和java语言。 题目是这样的: 求高精度幂 Time Limit: 500MS Memory Limit: 10000K Total Submissions: 44697 Accepted: 10245 Description 对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算...

aju78454的博客 164

模板 - Java 高精度计算

Java 高精度计算模板 在用C或者C++处理大数时感觉非常麻烦,但是在JAVA中有两个类BigInteger和BigDecimal分别表示大整数类和大浮点数类,至于两个类的对象能表示最大范围不清楚,理论上能够表示无线大的数,只要计算机内存足够大。 这两个类都在java.math.*包中,因此每次必须在开头处引用该包。 Ⅰ基本函数: 1.valueOf(parament); 将参数转换...

梦之城 695
上一篇: EJB 3.0 的新规范概览及其未来发展
下一篇: 用Java实现几种常见的排序算法
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值