小编Axe*_*xel的帖子

使用Raphael JS将所有SVG文本节点转换为路径节点

我正在尝试编写RaphaelJS函数,该函数将采用Raphael纸张实例中的现有文本节点并将其转换为路径.

目标是完全按照页面上显示的方式复制文本的位置,大小和属性,但使用路径而不是文本进行渲染.我最初无法使用Raphael paper.print()函数呈现文本,因为文本是动态更新的,并且需要基于"文本"的属性来执行此操作.将现有文本节点转换为路径将作为过程中的"最终"步骤(在文本修改完成之后)发生.

我这样做是为了消除安装字体以便以后查看或处理SVG的需要.

我面临的挑战是:

  1. 文本节点可以包括带有xdy定义的tspans .创建的路径必须完美地排列每个childNode字母(tspans).

  2. 检索文本节点的实际位置数据,以及每个tspan.这是我遇到麻烦的地方,希望有经验的人可以帮助我.由于笔划宽度和其他属性会影响定位/ bbox值,因此我不确定获取文本正确定位数据的最有效方法是什么.

到目前为止我尝试了什么:

我的代码的简单细分.

我编写了一个自定义属性函数textFormat,它以交错的形式格式化文本.此函数解析文本节点,通过添加新行\n字符的每个字母对其进行拆分,并调整定位以使其交错显示.

textToPaths函数是一个纸质函数,它应该循环通过纸质节点,并使用Raphael paper.print()函数将所有找到的文本节点转换为路径.这是我遇到麻烦的功能.

在这里查看完整的JSFiddle示例

问题代码
我不知道如何获得准确,一致xy值传递给paper.print()函数.现在,我正在使用,getBoundingClientRect()但它仍然关闭和倾斜.我的假设是笔划宽度影响x和y计算.

        //Loop through each tspan and print the path for each.
        var i,
            children = node.node.childNodes,
            len = children.length;

        for (i = 0; i < len; i++) {
            var tspan = children[i],
                tspanText = tspan.innerHTML,
                x = tspan.getBoundingClientRect().left - node.node.getBoundingClientRect().left,  //How do I get …
Run Code Online (Sandbox Code Playgroud)

javascript svg raphael

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

使用SoapClient将XML输入发送到WSDL

我有这个WSDL:https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx? WSDL

我试图使用SoapClient向CustomerSearch方法发送请求.

我正在使用的代码如下:

$url = 'https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL';
$client = new SoapClient($url);

$CustomerSearch = array(
    'AuthorID' => $authorID,
    'UserID' => $userID,
    'UserPassword' => $userPassword,
    'Email' => $customerEmail 
);

$xml = array('CustomerSearch' => $CustomerSearch);

$result = $client->CustomerSearch(array('xml' => $xml));
Run Code Online (Sandbox Code Playgroud)

当我运行代码时,我得到以下PHP异常:

Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'any' property
Run Code Online (Sandbox Code Playgroud)

我也尝试过这个XML:

$xml = "
<?xml version=\"1.0\" encoding=\"utf-8\"?> 
<CustomerSearch>
    <AuthorID>$authorID</AuthorID>
    <UserID>$userID</UserID>
    <UserPassword>$userPassword</UserPassword>
    <Email>$customerEmail</Email>
</CustomerSearch>
";
Run Code Online (Sandbox Code Playgroud)

这给了我以下结果(来自print_r):

object(stdClass)#4 (1) { ["CustomerSearchResult"]=> object(stdClass)#5 (1) { ["any"]=> string(108) …
Run Code Online (Sandbox Code Playgroud)

php soap wsdl soap-client

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

使用 PHP 将 SVG 转换为 JPG 时,Imagick 不使用自定义字体

尝试将 SVG 转换为 JPG 图像时,我遇到了自定义字体无法呈现的问题。我正在font-family="Lobster"为 SVG 文本元素使用定义。

我的服务器设置如下:

  • CentOS 6.5(32 位)
  • ImageMagick 6.5.4-7
  • PHP 5.2.17

我正在测试的 PHP 代码,但不起作用。我正在尝试使用自定义字体Lobster

//Setup SVG to be read by Imagick.
$SVG = '<?xml version="1.0" encoding="utf-8"?>';
$SVG .= '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">';
$SVG .= '<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="158px" height="92px" viewBox="0 0 158 92" enable-background="new 0 0 158 92" xml:space="preserve">';
$SVG .= '<text transform="matrix(1 0 0 1 32 58)" font-family="Lobster" font-style="normal" font-size="20px" font-weight="400">Lobster</text>';
$SVG .= '</svg>'; …
Run Code Online (Sandbox Code Playgroud)

php svg imagemagick imagick

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

强制div中的换行符

我在一个div中进行了一次聊天对话,但很长的话都说不出来了.我被建议使用i-frame,但是怎么样?我认为这是针对外部网站的.

jsFiddle代码

CSS

.chat{
   width: 230px;
   height: 310px;
   margin-left: 10px;
   background-color: grey;
   border: solid 1px black;
   color: #1855a3;
   overflow-y: scroll;
}
Run Code Online (Sandbox Code Playgroud)

html css

-4
推荐指数
1
解决办法
1万
查看次数

标签 统计

php ×2

svg ×2

css ×1

html ×1

imagemagick ×1

imagick ×1

javascript ×1

raphael ×1

soap ×1

soap-client ×1

wsdl ×1