我正在尝试编写RaphaelJS函数,该函数将采用Raphael纸张实例中的现有文本节点并将其转换为路径.
目标是完全按照页面上显示的方式复制文本的位置,大小和属性,但使用路径而不是文本进行渲染.我最初无法使用Raphael paper.print()函数呈现文本,因为文本是动态更新的,并且需要基于"文本"的属性来执行此操作.将现有文本节点转换为路径将作为过程中的"最终"步骤(在文本修改完成之后)发生.
我这样做是为了消除安装字体以便以后查看或处理SVG的需要.
我面临的挑战是:
文本节点可以包括带有x和dy定义的tspans .创建的路径必须完美地排列每个childNode字母(tspans).
检索文本节点的实际位置数据,以及每个tspan.这是我遇到麻烦的地方,希望有经验的人可以帮助我.由于笔划宽度和其他属性会影响定位/ bbox值,因此我不确定获取文本正确定位数据的最有效方法是什么.
到目前为止我尝试了什么:
我的代码的简单细分.
我编写了一个自定义属性函数textFormat,它以交错的形式格式化文本.此函数解析文本节点,通过添加新行\n字符的每个字母对其进行拆分,并调整定位以使其交错显示.
textToPaths函数是一个纸质函数,它应该循环通过纸质节点,并使用Raphael paper.print()函数将所有找到的文本节点转换为路径.这是我遇到麻烦的功能.
问题代码
我不知道如何获得准确,一致x和y值传递给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) 我有这个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) 尝试将 SVG 转换为 JPG 图像时,我遇到了自定义字体无法呈现的问题。我正在font-family="Lobster"为 SVG 文本元素使用定义。
我的服务器设置如下:
我正在测试的 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) 我在一个div中进行了一次聊天对话,但很长的话都说不出来了.我被建议使用i-frame,但是怎么样?我认为这是针对外部网站的.
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) php ×2
svg ×2
css ×1
html ×1
imagemagick ×1
imagick ×1
javascript ×1
raphael ×1
soap ×1
soap-client ×1
wsdl ×1