我正在使用iText将html转换为pdf,但我不断收到RuntimeWorkerException parseXHtml.这是我的代码:
Document tempDoc = new Document();
PdfWriter pdfWriter = PdfWriter.getInstance(tempDoc, out);
tempDoc.open();
XMLWorkerHelper.getInstance().parseXHtml(pdfWriter, tempDoc, new ByteArrayInputStream(html.getBytes()));
tempDoc.close();
Run Code Online (Sandbox Code Playgroud)
我不太熟悉HTML和XHTML之间的差异,所以我对如何处理这个问题感到有些不知所措.如果它有帮助,这是html源代码.
我正在尝试为每台计算机的应用程序生成安装程序。这是我的组件:
<Component Id="ProductComponent" Directory="InstallFolder" Guid="{MY_GUID}">
<File Id="ProductComponent" Source="$(var.MyApp.TargetPath)">
<Shortcut Id="StartMenuShortcut"
Name="MyApp"
Description="App Description"
Directory="MenuFolder"
WorkingDirectory="InstallFolder"
Icon="icon.ico" />
</File>
<RemoveFolder Id="RemoveMenuFolder" Directory="MenuFolder" On="uninstall" />
<RegistryValue Root="HKLM" Key="Software\Microsoft\MyApp" Name="installed" Type="integer" Value="1" KeyPath="yes"/>
</Component>
Run Code Online (Sandbox Code Playgroud)
WiX吐出以下内容:
错误ICE43:组件ProductComponent具有未发布的快捷方式。它的KeyPath注册表项应属于HKCU。
I can't understand why it requires a per-user KeyPath for what I intend to be a per-machine component. Would this key not be left behind during uninstall performed by another user? Or its absence result in a duplicate during repair?
似乎如此,将其更改为HKCU后,我仍然收到以下信息:
警告ICE57:组件'ProductComponent'具有按用户和按计算机的数据,并带有HKCU注册表键路径。
因此,我对如何避免在将所有内容都安装到用户配置文件中时避免任何这些错误/警告感到困惑。
所以我有一个内容脚本,其中包含一个事件触发消息到"启动"脚本,我用它来创建一个带有本地html文件的选项卡,并将相同的消息/变量传递给该选项卡.然后,选项卡应根据变量加载指定的数据.它在大约50%的时间内按预期工作,使我相信它是一个同步性问题.我可能不会以正确的方式解决这个问题,但这是我能够自己解决的最好方法.
内容脚本(script.js):
function openHistory(event) {
var account = $(/*selector*/).html();
chrome.runtime.sendMessage(account);
}
Run Code Online (Sandbox Code Playgroud)
启动脚本(launch.js):
chrome.runtime.onMessage.addListener(function(account) {
chrome.tabs.create({url: 'background.html'}, function(tab) {
chrome.tabs.sendMessage(tab.id, account);
});
});
Run Code Online (Sandbox Code Playgroud)
HTML脚本(background.js):
chrome.runtime.onMessage.addListener(function(account) {
loadPage(account);
});
function loadPage(account) {
chrome.storage.sync.get(account, function(data) {
// Do stuff with DOM
});
}
Run Code Online (Sandbox Code Playgroud)
表现:
{
"manifest_version": 2,
"name": "Extension",
"version": "1.0",
"permissions": ["storage", "tabs"],
"background": {
"scripts": ["launch.js"],
"persistent": false
},
"content_scripts": [{
"js": ["jquery.js", "script.js"]
}]
}
Run Code Online (Sandbox Code Playgroud)
更新:我在launch.js中为tabs.sendMessage的回调添加了"alert(chrome.runtime.lastError.message)",每当它不起作用时,我得到"无法建立连接.接收端不存在".
我只是在setTimeout回调中设置后才尝试返回变量.我想不出有任何其他方法可以做到这一点,但这是我的尝试(我知道代码似乎很愚蠢,但它是解决Cordova错误).由于我理解的原因,它导致无限循环.
function isConnected() {
var done = false;
setTimeout(function() {
done = true;
}, 500);
while (!done) {}
return navigator.connection.type!== Connection.NONE;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我解释为什么会发生这种情况,或提供替代方案吗?
更新(解决方案):
function isConnected(callback) {
setTimeout(function() {
callback(navigator.connection.type !== Connection.NONE);
}, 500);
}
isConnected(function(connected) {
if (!connected)
alert('Not Connected');
});
Run Code Online (Sandbox Code Playgroud) 我试图执行一些代码,每当我的活动被杀害,但不是当它只是移动到背景(所以只是调用它的onPause()是不是一个解决方案),我理解onDestory()是不能保证调用.我一直在寻找并没有找到办法做到这一点.我怎样才能解决这个问题?可能吗?
假设视图中有两个可能的代码块,并使用类似的方式将模型传递给它 return View(db.Products.Find(id));
List<UserReview> reviews = Model.UserReviews.OrderByDescending(ur => ur.Date).ToList();
if (myUserReview != null)
reviews = reviews.Where(ur => ur.Id != myUserReview.Id).ToList();
Run Code Online (Sandbox Code Playgroud)
IEnumerable<UserReview> reviews = Model.UserReviews.OrderByDescending(ur => ur.Date);
if (myUserReview != null)
reviews = reviews.Where(ur => ur.Id != myUserReview.Id);
Run Code Online (Sandbox Code Playgroud)
两者之间的性能影响是什么?到目前为止,内存中的所有产品相关数据,包括其导航属性?ToList()在这个例子中使用是否重要?如果没有,是否有更好的方法在List不必ToList()每次调用的情况下使用Linq查询,或者这是一种典型的方式吗?
javascript ×2
android ×1
asp.net-mvc ×1
asynchronous ×1
c# ×1
html ×1
html-to-pdf ×1
itext ×1
java ×1
lifecycle ×1
linq ×1
ondestroy ×1
onpause ×1
pdf ×1
settimeout ×1
wix ×1