Google app engine 关于转换API的Google应用程序引擎文档不完整
我正在尝试将HTML字符串转换为.PNG文件。多亏了那个让我看到上一篇文章的人 我使用 它可以工作,但我的HTML字符串中的图像不显示 在关于的文档中,提到了添加资产,并提到了static/icon.gif,我认为这可以解决我的问题,但文档不完整 有人能帮忙吗 我的HTML转换为.PNG是可行的,但所有的图像,例如Google app engine 关于转换API的Google应用程序引擎文档不完整,google-app-engine,Google App Engine,我正在尝试将HTML字符串转换为.PNG文件。多亏了那个让我看到上一篇文章的人 我使用 它可以工作,但我的HTML字符串中的图像不显示 在关于的文档中,提到了添加资产,并提到了static/icon.gif,我认为这可以解决我的问题,但文档不完整 有人能帮忙吗 我的HTML转换为.PNG是可行的,但所有的图像,例如 尚未打印http://mydomain.com/image.gif可用 谢谢 铅 更新1: 根据文档,我应该为每个图像创建单独的资产,并且名称必须与src attr匹配 List&
尚未打印http://mydomain.com/image.gif
可用
谢谢
铅
更新1:
根据文档,我应该为每个图像创建单独的资产,并且名称必须与src attr匹配
List<Asset>assets = new ArrayList<Asset>();
try {
Asset asset = new Asset("text/html", notification.getMessage().getBytes("UTF-8"), "testfile.html");
assets.add(asset);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
更新2:典型的通知。getMessage()应该返回
<html>
<head>
<style type="text/css">
/** Add css rules here for your application. *//** Example rules used by the template application (remove for your app) */h1 { font-size: 2em; font-weight: bold; color: #777777; margin: 40px 0px 70px; text-align: center;}.sendButton { display: block; font-size: 16pt;}/** Most GWT widgets already have a style name defined */.gwt-DialogBox { width: 400px;}.dialogVPanel { margin: 5px;}.serverResponseLabelError { color: red;}/** Set ids using widget.getElement().setId("idOfElement") */#closeButton { margin: 15px 6px 6px;}.usefulLinksUL{list-style-type:none;margin:0;padding:0;display:block;font-weight:bold;#background-color:#FFD700;width:180px;}.usefulLinksAnchor{a:link,a:visited;text-decoration:none;a:hover,a:active;}.note {font-size: 80%;background-color: #FEF49E;/**background-color: #d8da3d;*/border: 1px solid #D0C98D;-webkit-box-shadow: -8px 5px 5px rgba(0, 0, 0, 0.3);}.note-title {margin: 5px 5px 0 5px;padding: 4px;-moz-border-radius: 5px;-webkit-border-radius: 5px;background-color: #D0C98D;color: white;font-weight: bolder;}.note-content {margin: 5px;background: transparent;border: none;overflow: hidden;}.container { width:50px; overflow:hidden }.cube { width:150px; height:150px; float:left;}#rounded-corner{ font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; font-size: 12px; margin: 5px; /*width: 180px;*/ text-align: left; border-collapse: collapse;}#rounded-corner thead th.rounded-company{ background: #b9c9fe url('img/latestResult/left.png') left -1px no-repeat;}#rounded-corner thead th.rounded-q4{ background: #b9c9fe url('img/latestResult/right.png') right -1px no-repeat;}#rounded-corner th{ padding: 8px; font-weight: normal; font-size: 13px; color: #039; background: #b9c9fe;}#rounded-corner td{ padding: 8px; background: #e8edff; border-top: 1px solid #fff; color: #669;}#rounded-corner tfoot td.rounded-foot-left{ background: #e8edff url('img/latestResult/botleft.png') left bottom no-repeat;}#rounded-corner tfoot td.rounded-foot-right{ background: #e8edff url('img/latestResult/botright.png') right bottom no-repeat;}#rounded-corner tbody tr:hover td{ background: #d0dafd;}.latestLotto{ background-color: #C3D9FF; border: 1px solid #87B3FF; cursor: default; }.bbottomyello {border-bottom: 1px solid #CFA55B;}.onGreenBackground {font-family: Arial, Helvetica, sans-serif;font-size: 11px;color: white;font-style: normal;}.btopbottomYellow {border-top: 1px solid #FFCB05;border-bottom: 1px solid #FFCB05;}.bbottomYellow {border-bottom: 1px solid #FFCB05;}h3 {font-family: Arial, Helvetica, sans-serif;font-size: 11px;color: #EB0900;}
</style>
</head>
<body>
<table width="100%" height="123" border="0" cellpadding="0" cellspacing="0" bgcolor = "#FFFFFF">
<tbody><tr>
<td width="47%" class="bbottomyello"><img src="http://mylottoshop.appspot.com//img/lotto_top_left_home.gif" alt=""></td>
<td width="16%" class="bbottomyello"> </td>
<td colspan="3" valign="top" class="bbottomYellow"> </td>
</tr>
<tr>
<td valign="top" bgcolor="#00A452"> <span class="onGreenBackground"><span class="onGreenBackground">Wednesday, June 13 2012</span></span></td>
<td colspan="4" bgcolor="#00A452" class="onGreenBackground">Latest Results: Confirmed</td>
</tr>
<tr>
<td height="23" colspan="5" class="btopbottomYellow"> <strong> Winning Numbers</strong></td>
</tr>
<tr>
<td height="31" colspan="2" class="bbottomYellow">
<div align="center">
<img src="http://mylottoshop.appspot.com//img/balls/9.gif" width="30" height="40">
<img src="http://mylottoshop.appspot.com//img/balls/20.gif" width="30" height="40">
<img src="http://mylottoshop.appspot.com//img/balls/14.gif" width="30" height="40">
<img src="http://mylottoshop.appspot.com//img/balls/16.gif" width="30" height="40">
<img src="http://mylottoshop.appspot.com//img/balls/43.gif" width="30" height="40">
<img src="http://mylottoshop.appspot.com//img/balls/41.gif" width="30" height="40">
</div>
</td>
<td width="12%" height="31" valign="middle" class="bbottomYellow"><h3>Bonus<br>
Ball:</h3></td>
<td width="14%" class="bbottomYellow"> <div align="center"><img src="http://mylottoshop.appspot.com//img/balls/13.gif" width="34" height="40"></div></td>
</tr>
</tbody></table></body>
</html>
一些反馈。
结果没有差别。我猜return out.toByteArray()解决了我意外引起的NPE
预期结果如下:与电子邮件发送相同的HTML字符串将产生:
GAE转换结果为:
说明资产名称应与img标记的src属性匹配
下面是我在交互控制台中尝试的python代码,它实际生成了两个图像
from google.appengine.api import urlfetch
from google.appengine.api import conversion
url = "http://a0.twimg.com/profile_images/77186109/favicon_reasonably_small.png"
asset = conversion.Asset("text/html", '<b>some data</b><br/><img src="a.png"/><img src="%s"/><br/>Foo' % url, "test.html")
conversion_obj = conversion.Conversion(asset, "image/png")
img_response = urlfetch.fetch(url)
image1 = conversion.Asset('image/png', img_response.content, "a.png")
image2 = conversion.Asset('image/png', img_response.content, url)
conversion_obj.add_asset(image1)
conversion_obj.add_asset(image2)
result = conversion.convert(conversion_obj)
print result.error_text
print repr(result.assets[0].data)
从google.appengine.api导入urlfetch
从google.appengine.api导入转换
url=”http://a0.twimg.com/profile_images/77186109/favicon_reasonably_small.png"
asset=conversion.asset(“text/html”,一些数据
Foo'%url,“test.html”)
conversion_obj=conversion.conversion(资产,“图像/png”)
img_response=urlfetch.fetch(url)
image1=conversion.Asset('image/png',img_response.content,“a.png”)
image2=conversion.Asset('image/png',img_response.content,url)
转换对象添加资产(图1)
转换对象添加资产(图2)
结果=转换。转换(转换对象)
打印结果。错误\u文本
打印报告(结果.资产[0].数据)
说明资产名称应与img标记的src属性匹配
下面是我在交互控制台中尝试的python代码,它实际生成了两个图像
from google.appengine.api import urlfetch
from google.appengine.api import conversion
url = "http://a0.twimg.com/profile_images/77186109/favicon_reasonably_small.png"
asset = conversion.Asset("text/html", '<b>some data</b><br/><img src="a.png"/><img src="%s"/><br/>Foo' % url, "test.html")
conversion_obj = conversion.Conversion(asset, "image/png")
img_response = urlfetch.fetch(url)
image1 = conversion.Asset('image/png', img_response.content, "a.png")
image2 = conversion.Asset('image/png', img_response.content, url)
conversion_obj.add_asset(image1)
conversion_obj.add_asset(image2)
result = conversion.convert(conversion_obj)
print result.error_text
print repr(result.assets[0].data)
从google.appengine.api导入urlfetch
从google.appengine.api导入转换
url=”http://a0.twimg.com/profile_images/77186109/favicon_reasonably_small.png"
asset=conversion.asset(“text/html”,一些数据
Foo'%url,“test.html”)
conversion_obj=conversion.conversion(资产,“图像/png”)
img_response=urlfetch.fetch(url)
image1=conversion.Asset('image/png',img_response.content,“a.png”)
image2=conversion.Asset('image/png',img_response.content,url)
转换对象添加资产(图1)
转换对象添加资产(图2)
结果=转换。转换(转换对象)
打印结果。错误\u文本
打印报告(结果.资产[0].数据)
hi@skreft,感谢您的输入,我所做的与您的类似,我已经用一些源代码更新了我的问题,供您查看。也许这在python环境中工作,而不是在Java中工作?谢谢你的帮助。你的方法返回了错误的内容。您将返回缓冲区,该缓冲区将仅包含图像的一部分。您应该返回out.toByteArray()。另外,你可以发布你的html(你的通知变量)的一部分。你好,再次感谢你的帮助,非常感谢,为了清晰起见,我更新了我的帖子。同时,在等待您进一步建议的同时,我将尝试使用.toByteArray()。并给出反馈。还要注意,您生成的url的格式为url=“”+n+”.gif),但html文件中的url为“”(请注意双斜杠)。资产名称和src属性都需要完全相同的字符串。另外,你是否会删除你发布的另一个问题,因为它是重复的。难以置信!作品感谢十亿@skreft,你是一个超级明星!您好@skreft,谢谢您的输入,我所做的与您的类似,我已经用一些源代码更新了我的问题,供您查看。也许这在python环境中工作,而不是在Java中工作?谢谢你的帮助。你的方法返回了错误的内容。您将返回缓冲区,该缓冲区将仅包含图像的一部分。您应该返回out.toByteArray()。另外,你可以发布你的html(你的通知变量)的一部分。你好,再次感谢你的帮助,非常感谢,为了清晰起见,我更新了我的帖子。同时,在等待您进一步建议的同时,我将尝试使用.toByteArray()。并给出反馈。还要注意,您生成的url的格式为url=“”+n+”.gif),但html文件中的url为“”(请注意双斜杠)。资产名称和src属性都需要完全相同的字符串。另外,你是否会删除你发布的另一个问题,因为它是重复的。难以置信!作品感谢十亿@skreft,你是一个超级明星!
from google.appengine.api import urlfetch
from google.appengine.api import conversion
url = "http://a0.twimg.com/profile_images/77186109/favicon_reasonably_small.png"
asset = conversion.Asset("text/html", '<b>some data</b><br/><img src="a.png"/><img src="%s"/><br/>Foo' % url, "test.html")
conversion_obj = conversion.Conversion(asset, "image/png")
img_response = urlfetch.fetch(url)
image1 = conversion.Asset('image/png', img_response.content, "a.png")
image2 = conversion.Asset('image/png', img_response.content, url)
conversion_obj.add_asset(image1)
conversion_obj.add_asset(image2)
result = conversion.convert(conversion_obj)
print result.error_text
print repr(result.assets[0].data)