我想在WordPress中使用php代码保存当前网页的临时图像或pdf。理想情况下,我不想使用额外的插件,但如果这是唯一的方法就可以了。
我希望所有内容都在后台并使用php邮件发送。我找到了邮件部分,我只是坚持将页面保存为图像或pdf。
这甚至可能吗?
答案 0 :(得分:0)
这有点像 $I->amOnPage('/my-url/to/screenshot');
$I->see('Something that clearly isnt on the page');
,但它的种可能。如果您使用无头浏览器(如Selenium或phantomjs)设置Codeception验收测试,请编写失败的验收测试,它会在日志中放置屏幕截图!
验收测试非常简单:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication4
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlReaderSettings settings = new XmlReaderSettings();
settings.ConformanceLevel = ConformanceLevel.Fragment;
XmlReader reader = XmlReader.Create(FILENAME,settings);
while (!reader.EOF)
{
try
{
if (reader.Name != "LOG_x0020_ParityRate")
{
reader.ReadToFollowing("LOG_x0020_ParityRate");
}
if (!reader.EOF)
{
XElement parityRate = (XElement)XElement.ReadFrom(reader);
ParityRate newLog = new ParityRate();
ParityRate.logs.Add(newLog);
newLog.date = DateTime.ParseExact((string)parityRate.Element("DATE"), "MM/dd/yyyy - hh:mm", System.Globalization.CultureInfo.InvariantCulture);
newLog.name = (string)parityRate.Element("CHANNELNAME");
newLog.sql = (string)parityRate.Element("SQL");
newLog.hotel = (int)parityRate.Element("ID_HOTEL");
}
}
catch (Exception ex)
{
}
}
}
}
public class ParityRate
{
public static List<ParityRate> logs = new List<ParityRate>();
public DateTime date { get; set; }
public string name { get; set; }
public string sql { get; set; }
public int hotel { get; set; }
}
}
那会失败,它会将PNG屏幕截图放在日志目录中!
就像我说的,非常多的HACK,但它会起作用! http://codeception.com/quickstart
答案 1 :(得分:0)
基本上你的PHP / Wordpress服务器不知道当前网页是什么&#34;看起来因为它无法呈现HTML(这是您的浏览器的工作)。
但是有一些PHP库,例如HTML2PDF,可以帮助您实现这一目标:
$content = '<Your string containing some HTML content>';
$html2pdf = new Html2Pdf('P', 'A4', 'fr');
$html2pdf->setDefaultFont('Arial');
$html2pdf->writeHTML($content);
$html2pdf->output('myfile.pdf');
请注意,您将获得一个非常基本的渲染,没有任何动态内容。