例:
1 |
|
考えられる既製の方法:
1. Java の html2image を使用します
2. TCPDF を使用して PDF を生成します。
3. PHP のスクリーンショット関数 imagegrabscreen と imagegrabwindow を使用します
1 つ追加します
https://zh.wikipedia.org/wiki/Webkit
https://en.wikipedia.org/wiki/Webkit
上の階の接続にアクセスできません
dompdf を使用することもできます
まず、define('DOMPDF_PDF_BACKEND', 'gd' ); 画像を生成
「アクセスできません」 233 の表現をさせてください...
えっと、どういう意味ですか?
例
1 |
|
dompdf ダウンロード アドレス
http://code.google.com/p/dompdf/downloads/list
例
1 |
|
dompdf のバージョンが異なると、内容も異なります。パフォーマンス (私のものは dompdf.php、v 1.24 2009-04-29)
HTML を解析するために DOMDocument を使用します
print_r($dompdf->_xml);
解析が正常かどうかを確認できます
dompdf のバージョンが異なると、パフォーマンスも異なります (私のバージョンは dompdf.php、v 1.24 2009-04-29)
HTML を解析するために DOMDocument を使用します
print_r($dompdf- > _xml);
解析が正常かどうかを確認できます
php のバージョンは何ですか?
_xml 属性は確かに保護モードです
dompdf.cls.php
class DOMPDF {
protected $_xml; がありますが、php5.4.12 にはまだあります。
DOMPDF Object
(
[_xml:protected] => DOMDocument Object
(
[doctype] =>(オブジェクト値省略)
....
パブリック モードに変更できます
熱心な回答をしてくれたモデレーターに感謝します
ダウンロードした dompdf は @version $ Id です: dompdf.cls.php 468 2012-02-05 10:51:40Z fabien.menager は最新のはずです
php のバージョンは何ですか?
_xml 属性は確かに保護モードです。 php5.4.12 では
class DOMPDF {
protected $_xml;
ですが、
DOMPDF Object
(
[_xml:protected] => DOMDocument) Object
(
[doctype] => (オブジェクト値は省略)
.... パブリック モード
XML を public に変更しましたが、エラーが表示されます
DOMDocument Object ( )
警告: ヘッダー情報は変更できません - ヘッダーはすでに G :AppServwww6includegd_adapter.cls.php の 751 行目 (G:AppServwww61.php:16 で開始された出力) によって送信されています
看样子是对ssl 也下手了,去掉http后的s应该能访问,webkit也不是什么关键词
http://zh.wikipedia.org/wiki/Webkit
http://en.wikipedia.org/wiki/Webkit
不过 PHP 好像也没webkit
http://www.phpclasses.org/package/7460-PHP-Convert-HTML-to-PDF-using-the-Webkit-engine.html
看看这个有没帮助
你下载的 dompdf 本身应该是没有问题的(这一点你可以通过生成 pdf 加以验证)
由于 dompdf 提供了生成图片的功能,所以也只是在正确生成 pdf 的基础上,通过定义 DOMPDF_PDF_BACKEND 常量将其图片生成的功能调出来而已
至于在测试时修改它的部分代码,这也是出于测试、分析的需要。也当然是自己对修改产生的后果负责
我把xml改成public 里 现在提示错误
DOMDocument Object ( )
Warning: Cannot modify header information - headers already sent by (output started at G:\AppServ\www\6\1.php:16) in G:\AppServ\www\6\include\gd_adapter.cls.php on line 736
Warning: Cannot modify header information - headers already sent by (output started at G:\AppServ\www\6\1.php:16) in G:\AppServ\www\6\include\gd_adapter.cls.php on line 751
谢谢版主的热心回复
不同版本的 dompdf 会有不同的表现(我这是 dompdf.php,v 1.24 2009-04-29 的)
它使用 DOMDocument 解析 html
print_r($dompdf->_xml);
可以看到解析是否正常
不报错似乎不应该
gd写文字总是需要字体文件的
dompdf的默认字体是 Times-Roman
为此作为测试,你可以将任意一款ttf中文字体复制到 lib/fonts 目录中,并更名为 Times-Roman.ttf
版本声明
1 |
|
不报错似乎不应该
gd写文字总是需要字体文件的
dompdf的默认字体是 Times-Roman
为此作为测试,你可以将任意一款ttf中文字体复制到 lib/fonts 目录中,并更名为 Times-Roman.ttf
版本声明
1 |
|
不过时间是有点区别
* @version 0.5.1
*/
/* $Id: dompdf.php,v 1.17 2006/07/07 21:31:02 benjcarson Exp $ */
是1.17的,不是1.24的,你能把你这个1.24的打包发出来测试下不?
已上传 http://download.csdn.net/detail/xuzuning/5958493
已上传 http://download.csdn.net/detail/xuzuning/5958493
由于 dompdf 使用 DOMDocument 解析 HTML
所以被解析的 HTML 文档中一定要有语言声明
否则将按欧洲语言解析,汉字就不能显示了
使用 php 的截屏函数 imagegrabscreen、imagegrabwindow
这2个函数有谁使用过的没?
由于 dompdf 使用 DOMDocument 解析 HTML
所以被解析的 HTML 文档中一定要有语言声明
否则将按欧洲语言解析,汉字就不能显示了
你用我给你的试试
截屏函数只用于 window 系统
刚才下了最新的 0.6
@version $Id: dompdf.php 448 2011-11-13 13:00:03Z fabien.menager $
补上字体文件 Times-Roman.ttf
#6 的代码即可正常运行
刚才下了最新的 0.6
@version $Id: dompdf.php 448 2011-11-13 13:00:03Z fabien.menager $
补上字体文件 Times-Roman.ttf
#6 的代码即可正常运行
是的,dompdf 的渲染效果很差不过0.6也改进了不少
但比起 tcpdf 来就差的太远了,只是 tcpdf 尚不支持输出图片。改起来也太费劲了
是的,dompdf 的渲染效果很差不过0.6也改进了不少
但比起 tcpdf 来就差的太远了,只是 tcpdf 尚不支持输出图片。改起来也太费劲了
截屏
1 |
|
看了不少资料,感觉php做这个目前确实很薄弱
如果你是在 linux 下,那么你应该可以找到借助浏览器内核做分析的 php 项目
啥意思?html2img?我用c#做过 就是访问一个网址 生成图片
这和验证码生成不是一个原理?
这和验证码生成不是一个原理?
那就可以用webscreencapture.exe之类的PHP截屏软件。
不同版本的 dompdf 会有不同的表现(我这是 dompdf.php,v 1.24 2009-04-29 的)
它使用 DOMDocument 解析 html
print_r($dompdf->_xml);
可以看到解析是否正常
我測試了一下0.6版,就算排除了所有的錯誤之後對於html的解析還是非常不理想
我測試了一下0.6版,就算排除了所有的錯誤之後對於html的解析還是非常不理想
不满意可以改,不想改就自己写
只要对 css 很熟悉的话,做起来并不复杂
用 DOMDocument::loadHTML 载入 html
析出各个元素的属性
计算每个盒子的尺寸和位置 这个比较复杂,需对 css 很熟悉
逐一绘制
不满意可以改,不想改就自己写
只要对 css 很熟悉的话,做起来并不复杂
用 DOMDocument::loadHTML 载入 html
析出各个元素的属性
计算每个盒子的尺寸和位置 这个比较复杂,需对 css 很熟悉
逐一绘制
不满意可以改,不想改就自己写
只要对 css 很熟悉的话,做起来并不复杂
用 DOMDocument::loadHTML 载入 html
析出各个元素的属性
计算每个盒子的尺寸和位置 这个比较复杂,需对 css 很熟悉
逐一绘制
自己繪製只能繪製一個大概而已,並不能做到完美,看來只能另闢蹊徑藉助瀏覽器的內核了.
不满意可以改,不想改就自己写
只要对 css 很熟悉的话,做起来并不复杂
用 DOMDocument::loadHTML 载入 html
析出各个元素的属性
计算每个盒子的尺寸和位置 这个比较复杂,需对 css 很熟悉
逐一绘制
那是固定格式,用gd很容易做到
那是固定格式,用gd很容易做到
给你个示例代码
1 |
|