小编Adr*_*aty的帖子

通过JavaScript在移动版Safari中检测应用顶部的双击

iOS有一个惯例,即双击顶部栏(即显示当前时间的位置)将应用程序滚动到顶部状态.例如,双击Safari中的顶栏会将您带到当前网页的顶部,并且在Facebook/Twitter中双击顶部会将您带到Feed的顶部.这是一个非常有用的导航快捷方式.

为了解决这个问题,我们称之为TopTap.

我想知道如何在移动Safari中的JavaScript应用程序中检测TopTaps - 也就是说,不是在iOS应用程序中,而是在移动Safari中正好查看的网页中.

在我的特定情况下,我不能依赖内置的移动Safari TopTap行为,因为我的文档由一个<canvas>实现其自己的可滚动界面的元素组成.我希望能够检测到TopTap,以便我可以<canvas>将其滚动到顶部状态.

我已经尝试添加一个onscroll事件处理程序,但是在那个事件中没有可以区分TopTaps的区别信息.此外,我无法使用触摸事件(touchstart等),因为TopTap发生在浏览器/ OS chrome中,超出了网页的范围.

有任何想法吗?

html javascript safari ios

11
推荐指数
1
解决办法
1809
查看次数

PDF线宽如何在水平和垂直方向上与CTM相互作用?

我试图在给定当前变换矩阵(CTM)的情况下确切地弄清楚线宽如何影响PDF中的描边线.两个问题......

第一:如何使用CTM将线宽转换为设备空间?PDF 1.7参考中的页面208 描述了如何使用CTM转换点,假设输入数据是(x,y)点.线宽只是一个值,所以我该如何转换它?我是否像(lineWidth,lineWidth)一样创建一个"虚拟"点?

第二:一旦我进行了计算,我将得到另一个(x,y)点.如果CTM具有不同的水平与垂直比例因子,则会给出两种不同的线宽.这些线宽实际上是如何应用的?第一个(x)是否仅在绘制水平线时应用?

第二个问题的具体示例:如果我使用线宽(2,1)从(0,0)到(4,4)绘制/描边水平线,得到的矩形的边界框的坐标是什么(即,包含线宽的矩形)?

这是参考文献中的第215页,但实际上并没有解释描边线的粗细如何变化:

在设备空间中产生的效果取决于在描边路径时有效的当前变换矩阵(CTM).如果CTM通过水平和垂直维度中的不同因素指定缩放,则设备空间中的描边线的厚度将根据其方向而变化.

pdf graphics

5
推荐指数
1
解决办法
424
查看次数

S3 PUT的Boto generate_url不适用于IAM角色?

我使用以下Python/Boto代码生成一个到Amazon S3存储桶的一次性文件上传URL:

from boto.s3.connection import S3Connection

def get_signed_upload_url():
    s3 = S3Connection(ACCESS_KEY_ID, SECRET_ACCESS_KEY, is_secure=True)
    return s3.generate_url(300, 'PUT', bucket=BUCKET, key=KEY,
        headers={'Content-Type': 'text/plain'})
Run Code Online (Sandbox Code Playgroud)

它已经运行了好几年了,今天仍在继续.

但是现在,我正在转换为IAM角色 - 这将使我免于硬编码ACCESS_KEY_IDSECRET_ACCESS_KEY.因此,我删除了硬编码密钥,导致此代码:

from boto.s3.connection import S3Connection

def get_signed_upload_url():
    s3 = S3Connection(is_secure=True)
    return s3.generate_url(300, 'PUT', bucket=BUCKET, key=KEY,
        headers={'Content-Type': 'text/plain'})
Run Code Online (Sandbox Code Playgroud)

使用代码,每当我生成一个URL并PUT从我的客户端Web应用程序(通过Ajax)向它发出请求时,我都会收到HTTP 400 Bad Request来自S3 的错误:

<Error>
    <Code>InvalidToken</Code>
    <Message>The provided token is malformed or otherwise invalid.</Message>
    <!-- account-specific stuff removed -->
</Error>
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

一些额外的细节:

  • 这将部署到EC2服务器,该服务器将自动分配其IAM角色.我已经确认该角色的授权可以正确地提供给我的Python代码.我的代码的所有其他部分 - 包括generate_url()生成GETURL的调用- …

amazon-s3 boto amazon-web-services amazon-iam

5
推荐指数
1
解决办法
425
查看次数

PDF中字形的精确边界框?

我正在尝试计算矢量PDF中每个文本字形的确切边界框。

这包括跟踪CTM,绘制/放置PDF指令等,还包括计算“字形空间”中每个特定字形的边界(使用嵌入字体中的GLYF表中的信息)。

我意识到PDF FontDescriptor为每个嵌入字体都包括一个粗略的边框,但这是字体中所有字形的组合-即,适合字体中所有字形的最小边框。就我的目的而言,我需要更精确的定位。

我的特定应用是从活页乐谱的矢量PDF中提取音乐语义。因此,一个不错的约束条件是我可以假定字形没有在同一Tj / TJ运算符中绘制在一起。每个字形都是独立绘制的。

另外,请注意,我将边界框定义为“可以包含字形的所有绘制部分的最小框”。无需忽略ascenders / descenders / etc。在其他应用程序中可能被视为在边界框之外。

这里有很多活动的部分,我发现很难调试。因此,以下是我希望提供的帮助:

  1. 我创建的此示例PDF具有10个字形。这10个字形在设备空间中的“地面真相”边界框定位是什么?我当前的代码产生以下内容,但这是不正确的。我知道它是不正确的,因为它说第一个字形(“&”)与第二个字形(“ \ u02d9”)水平相交,当您在PDF阅读器中查看PDF时,您会发现这不是正确的。
'&'      ( 57.2799755477664, 600.7092061684704,  86.7452642315424, 677.1570718099680)
'\u02d9' ( 82.0030393188000, 633.6851606704608,  96.3090818379936, 644.6969866323168)
'\u0153' (144.7841941848000, 623.9630080194528, 158.6735558539200, 634.5581702962656)
'\u0153' (181.6778111184000, 619.0027260546528, 195.5671727875200, 629.5978883314656)
'w'      (226.1671727148000, 611.3638918288608, 245.0765465300448, 622.3161944071392)
'w'      (320.1063822180000, 631.2050196880608, 339.0157560332448, 642.1573222663392)
'\u0153' (414.0455917212000, 641.3239948962528, 427.9349533903200, 651.9191571730656)
'\u0153' (450.9392086548000, 636.3637129314528, 464.8285703239200, 646.9588752082656)
'\u0153' (487.9878407856000, 631.4034309666528, 501.8772024547200, 641.9985932434656)
'\u0153' (524.8814577192000, 628.9232899842528, 538.7708193883200, 639.5184522610656)
Run Code Online (Sandbox Code Playgroud)
  1. 您是如何计算这些职位的?(考虑到PDF的复杂性,我要问的问题很多。)进行演练将对您有很大的帮助,而且我相信它会在将来对其他人有所帮助。

  2. 有没有可以立即使用的工具?

pdf fonts glyph

2
推荐指数
1
解决办法
1031
查看次数