首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果你从来没有做过那些看似很无聊的事

“老地方”是本号的另设专栏,每期大约会讲述一个没头没尾、真实平坦的小片段,它们都和老地方有关,来自作者左右,一个脑洞很浅,但回路曲折、半毛钱都不舍得拔的金牛座拆二代 。

首先,这件事源于我现在的一份工作,接下来我将细致的讲述一下。

如下图,我的工作就是用java语言把快递单生成一个PDF文件。嗯,这看起来很简单,等等,公司现在的框架是来一个模板程序员手写一个模板,现在的任务是动态的生成模板。

What?简单点说,就是你来一个模板,用一个通用的方法给实现了。

还有点懵?解释一波,例如:达芬奇要画蒙娜丽莎,假如画板是100*100的,那么眼睛的位置只需要给一个方位,也就是一个二维的物理位置,那么这个眼睛就会跳到那个位置,而不需要人工手动的描绘。嗯,我想,现在你应该有点明白了。

讲真的,这对我来说,简直就是一个恐怖的任务,我们老大还略带调皮的说,这非常好玩的。的确好玩,以至于公司到现在都没有玩出来。

好,解释之后,言归正传了。如果进一步剖析这个问题,那么就势必要解决两个大方向的问题:

第一,动态数据的问题,这好解决,直接从数据库调就可以了;

第二:也是最棘手的问题,二维物理空间分配的问题。也正是在处理这个问题的时候,才有了这篇文章的诞生。

首先,上图白色部分的尺寸是283*283的,在处理文字的时候我总结遇到了以下的几个问题。如果是中文,且设置中文的尺寸为0.1F*getPage.size()大小,那么10个中文正好可以铺满整个屏幕 (如图)。

可同样是设置0.1F*width,对于英文和数字则截然不同。如果是大写的英文字母,那么是15个刚好可以铺满整个屏幕,其中大写字母I(此处读音为ayi),是占半个字符的空间。如果是小写字母,那么是18个字符可以占满整个空间。

而其中i,j,l,t四个字母相对于其他字母又只占了半个甚至更小的空间。对于阿拉伯数字,和小写字母占的空间是一样的,而其中的1并没有和我想象的一样会占更小的空间。

仅仅是文字,就已经需要做这么多的区分了。因为必须要考虑整个布局的美观问题,所以对于每种处理的方案必须要计算整个所需字段的长度,这才有了这种看似无聊,确又很有趣的事情。

当然,这只是分析阶段,还没有到布局阶段,再比如:图片问题,以前的处理方案都是慢慢的程序员慢慢的调试,直到满意为止,可现在是必须先取得图片的尺寸,然后给出一个好的解决方案。

简单的一句话就是将这些差别转化为无差别对待,这就是我现在要处理的问题。

赶着周五早上说这些,好了,我得写代码了,我们下期见。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180720G1VDAR00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券