我正在使用node-webshot和phantomjs-cli将html字符串渲染为png图像。 html包含图像标记。当src属性指向本地文件且未引发错误时,不会呈现图像。但是,当src指向http位置时,它会渲染图像。我已经尝试了所有我能想到的不同文件路径组合,例如
Sub mail()
Dim wkb As Excel.Workbook
Dim wks As Excel.Worksheet
Set wkb = Excel.Workbooks("macro.xlsm")
Set wks = wkb.Worksheets("settings")
Dim OApp As Object, OMail As Object, signature As String
Dim OStrTITUS As String
Set OApp = CreateObject("Outlook.Application")
Set OMail = OApp.CreateItem(0)
With OMail
.Display
signature = OMail.body
.To = "mymail@mail.com"
.Subject = "Type your email subject here"
.Display
.body = "My email body" & vbNewLine & signature
If .BodyFormat <> olFormatRichText Then .BodyFormat = olFormatRichText
.Attachments.Add wkb.FullName, 999
SendKeys "{DOWN}{DOWN}{ENTER}", True 'set classification
SendKeys "{ENTER}", True 'send to group
.Send
End With
Set OMail = Nothing
Set OApp = Nothing
End Sub
但到目前为止还没有运气。有趣的是,它在我的同事的机器上工作正常,这是一台Mac但不在我的机器上是Windows,我尝试使用两台不同的Windows机器但没有成功。
以下是一些专注于此问题的简化代码:
<img src=images/mushrooms.png"/>
<img src=images//mushrooms.png"/>
<img src=c:\images\mushrooms.png"/>
<img src=c:\\images\\mushrooms.png"/>
<img src=file://c:\\images\\mushrooms.png"/>
<img src=file://images//mushrooms.png"/>
etc..
注释掉的代码块是一个使用Web链接作为图像源的示例,但我需要它来处理本地路径。
在知道如何解决之前,是否有人遇到此问题?
由于
答案 0 :(得分:3)
应该可以通过file:
URI方案访问本地文件:
<img src="file:///C:/images/mushrooms.png">
A file URL takes the form:
file://<host>/<path>
答案 1 :(得分:1)
答案 2 :(得分:1)
可能是因为你从不打开报价。 尝试:
<img src="images/mushrooms.png"/>
答案 3 :(得分:1)
可能是phantomjs
问题,我之前遇到过错误,他们几乎没有将项目维护到这个日期。您应该考虑切换到Headless Chrome,这是新的并由Chromium团队正式维护。
编辑:这是一个例子
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.setContent('<html><head></head><body><img src="c:\\images\\mushrooms.png"/></body></html>');
await page.screenshot({path: 'output.png'});
await browser.close();
})();