是否可以在WordPress中使用php保存临时图像或网页pdf?

时间:2017-09-14 13:58:52

标签: php

我想在WordPress中使用php代码保存当前网页的临时图像或pdf。理想情况下,我不想使用额外的插件,但如果这是唯一的方法就可以了。

我希望所有内容都在后台并使用php邮件发送。我找到了邮件部分,我只是坚持将页面保存为图像或pdf。

这甚至可能吗?

2 个答案:

答案 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');

请注意,您将获得一个非常基本的渲染,没有任何动态内容。