小编cor*_*opy的帖子

跨域 svg 精灵

我知道有很多方法可以在 HTML 中使用 SVG 精灵。我对这个日期的偏好是使用类似的东西

<div class="container">
   <svg class="icon">
     <title>Icon Title</title>
     <use xlink:href="/svg/sprite.svg#icon"/>
   </svg>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,现在我想从子域加载精灵,如下所示:

<div class="container">
   <svg class="icon">
     <title>Icon Title</title>
     <use xlink:href="https://sub.domain.com/svg/sprite-home.svg#icon"/>
   </svg>
</div>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为未获取文件。我也试过<object>,但这似乎也不起作用。

到目前为止,我只能使用

<?php include_once("https://sub.domain.com/svg/sprite.svg"); ?>
Run Code Online (Sandbox Code Playgroud)

可以作为快速修复,因为这不涉及太多重构。然而,这也意味着 HTML 变得臃肿。

使用该<use>方法,精灵被缓存。但是使用该include方法,精灵不会被缓存,只会被嵌入,因此它远非理想。

有没有人使用与跨域请求和浏览器缓存兼容的 php include 方法的任何替代方法?

html svg sprite cross-domain

7
推荐指数
1
解决办法
8660
查看次数

以安全的方式为nodeJS Transform流设置编码

根据nodeJS docs(v5.10.0)的Readable流:

readable.setEncoding('utf8')与直接使用来处理缓冲区相比,使用更好buf.toString(encoding)。这是因为否则可能会损坏“多字节字符(...)。如果要以字符串形式读取数据,请始终使用此方法。

我的问题是关于如何使用新的Transform流API来实现此目标。现在无需遍历继承详细方法。

因此,例如,这可以用作将stdin转换为大写字符串的方式

const transform = require("stream").Transform({
  transform: function(chunk, encoding, next) {
    this.push(chunk.toString().toUpperCase());
    next();
  }
});

process.stdin.pipe(transform).pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

但是,这似乎与不使用toString()on缓冲区的建议背道而驰。我尝试通过将编码设置为“ utf-8”来修改Transform实例,如下所示:

const transform = require("stream").Transform({
  transform: function(chunk, encoding, next) {
    this.push(chunk.toUpperCase()); //chunk is a buffer so this doesn't work
    next();
  }
});
transform.setEncoding("utf-8");

process.stdin.pipe(transform).pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)

经检查,transform第一种情况下的编码为空,而第二种情况下的编码确实已更改为“ utf-8”。但是,传递给转换函数的块仍然是缓冲区。我以为可以通过设置编码toString()方法来跳过,但事实并非如此。

我也尝试read像Readable和Duplex示例中那样扩展方法,但这是不允许的。

有办法摆脱toString()吗?

javascript string encoding utf-8 node.js

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

Linux替代pdftk填写表格

pdftk多年来一直有libgcj过时的依赖。不幸的是,这意味着 pdftk 不能安装在任何最近的 RedHat/CentOS/Fedora 安装中。

我一直在寻找替代方案,我可以看到有些人正在使用工具pdfunite来做一些 pdftk 曾经做过的事情。

不幸的是,我找不到任何从命令行提取表单字段数据和/或填写表单的工具。有没有这样的选择?

我可以看到这是七年前的 2009 年之前提出的,但已接受的答案不再相关。2016 年的问题是过时(且不安全!)的依赖。因此,为什么我要创建一个新问题。

linux pdf pdf-generation

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