나는 데이터베이스를 쿼리 한 다음 이에 따라 HTML을 쓰고 업데이트하는 PHP 파일이 있습니다.PHP 파일에서 HTML을 PDF 파일로 변환
은 내가 HTML2FPDF를 사용하여 PDF로이 페이지를 변환하려고 .. "PDF로 내보내기"이 페이지에 버튼이 있습니다, 그러나 나는 다음과 같은 오류 얻을 : 나는 문제가 의심
FPDF error: Unable to create output file: Entry Report
을 html 파일 대신 php 파일을 전달하기 때문에 :
<?php
require('html2fpdf.php');
if(isset($_POST['link'])){
$url = $_POST['link'];
$nm = $_POST['nm'];
convert($url, $nm);
}
function convert($link, $name){
$pdf=new HTML2FPDF();
$pdf->AddPage();
$fp = fopen($link,"r");
$strContent = fread($fp, filesize($link));
fclose($fp);
$pdf->WriteHTML($strContent);
$pdf->Output($name);
echo ("PDF file generated successfully!");
}
?>
내가이 문제를 어떻게 해결할 수 있는지 아는 사람 있습니까? ...
또는 PDF 파일로 PHP 파일을 변환하는 직접적인 방법이 ...
편집을 아마 중 하나를 변환 PHP에 의해 다음 HTML로 PDF로 HTML : OK 그래서 문제가 I didn를이었다 공용 쓰기 권한을 허용하지 않습니다. 이것을 변경하면, 나는 pdf 파일을 만들 수 있었다. 문제는 이것이다. ... pdf 파일이 비어있다. ...
나는 이것이 내가 지나가고 있다는 사실과 관련이 있다는 것을 알고있다. 통과 될 때 아마도 비어있는 PHP 페이지 ... html 내에서 html 내용을 캡처하여 pdf 출력이 비어 있지 않도록하려면 어떻게합니까? 여기
는 PHP 페이지입니다 :<?php
function connect() {
$dbh = mysql_connect ("localhost", "user", "password") or die ('I cannot connect to the database because: ' . mysql_error());
mysql_select_db("PDS", $dbh);
return $dbh;
}
session_start();
if(isset($_SESSION['username'])){
if(isset($_POST['entryId'])){
//do something
$dbh = connect();
$ide = $_POST['entryId'];
$usertab = $_POST['usertable'];
$answertable = $usertab . "Answers";
$entrytable = $usertab . "Entries";
$query = mysql_query("SELECT e.date, q.questionNumber, q.question, q.sectionId, a.answer FROM $answertable a, Questions q, $entrytable e WHERE a.entryId = '$ide' AND a.questionId = q.questionId AND e.entryId = '$ide' ORDER BY q.questionNumber ASC;") or die("Error: " . mysql_error());
if($query){
//set variables
$sectionOne = array();
$sectionTwo = array();
$sectionThree = array();
$sectionFour = array();
$sectionFive = array();
while($row=mysql_fetch_assoc($query)){
$date = $row['date'];
$section = $row['sectionId'];
switch($section){
case '1':
$sectionOne[] = $row;
break;
case '2':
$sectionTwo[] = $row;
break;
case '3':
$sectionThree[] = $row;
break;
case '4':
$sectionFour[] = $row;
break;
case '5':
$sectionFive[] = $row;
break;
default:
break;
}
}
}else{
//error - sql failed
}
}
?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<script src = "jQuery.js"></script>
<script>
$(document).ready(function(){
$("#export").click(function(e){
//post to html2pdfconverter.php
$("#link").val("Testers/viewentryreport.php");
$("#nm").val("Entry Report.pdf");
$("form#sendanswers").submit();
});
});
</script>
<title>Personal Diary System - Entry Report - <?php echo($date); ?></title>
</head>
<body>
<h1>Entry Report - <?php echo($date); ?></h1>
<div id = "buttons">
<form id = "sendanswers" name = "sendanswers" action="Testers/html2pdfconverter.php" method="post">
<input type = "hidden" name = "link" id = "link" value = "">
<input type = "hidden" name = "nm" id = "nm" value = "">
<input type = "button" name = "export" id = "export" value = "Export As PDF"/>
</form>
</div>
<h3>Biological Information</h3>
<?php
$i = 0;
foreach($sectionOne as &$value){
if($i == 1 || $i == 3){
$image = "assets/urine".$i.".png";
echo("<br/>");
echo($value['question']." <br/> "."<img src = \"$image\"/>");
echo("<br/>");
}else{
echo($value['question'].' : '.$value['answer']);
}
echo("<br/>");
$i++;
}
?>
<h3>Fatigue and Recovery</h3>
<?php
foreach($sectionTwo as &$value){
echo($value['question'].' : '.$value['answer']);
echo("<br/>");
}
?>
<h3>Illness and Injury</h3>
<?php
foreach($sectionThree as &$value){
echo($value['question'].' : '.$value['answer']);
echo("<br/>");
}
?>
<h3>Training Sessions</h3>
<?php
foreach($sectionFour as &$value){
echo($value['question'].' : '.$value['answer']);
echo("<br/>");
}
?>
<h3>General Feedback</h3>
<?php
if(count($sectionFive)>0){
foreach($sectionFive as &$value){
echo($value['question'].' : '.$value['answer']);
}
}else{
$sectionFive = "User didn't leave any feedback";
echo("User didn't leave any feedback");
}
echo("<br/>");
?>
</body>
</html>
<?php
}
?>
및 html2pdfconverter.php
<?php
require('html2fpdf.php');
if(isset($_POST['link'])){
$url = $_POST['link'];
$nm = $_POST['nm'];
convert($url, $nm);
}
function convert($link, $name){
$pdf=new HTML2FPDF();
$pdf->AddPage();
$fp = fopen($link,"r");
$strContent = fread($fp, filesize($link));
fclose($fp);
$pdf->WriteHTML($strContent);
$pdf->Output($name);
echo ("PDF file generated successfully!");
}
?>
편집 @TIMFERRIS
내가 @TimeFerris '답변에 따라이 내 변환 기능을 변경:
function convert($link, $name){
$pdf=new HTML2FPDF();
$pdf->AddPage();
$content = file_get_contents($link); //shorter than what you did
ob_start();
echo $content;
$pdf->WriteHTML(ob_get_contents());
ob_end_clean();
$pdf->Output($name);
echo ("PDF file generated successfully!");
}
PDF 파일이 생성되었지만 여전히 비어 있습니다.
"PHP 파일 전달"이란 무엇입니까? 함수에 전달하기 전에 $ url의 값은 무엇입니까? – Cfreak
스크립트에 해당 디렉토리에 대한 쓰기 권한이 있습니까? PHP와 FPDF는 당신의 파일명이 무엇인지 신경 쓸 수 없습니다. 파일 이름이 실제로 url이 아니고 스크립트에 쓰기 권한이 없으면 지정한 파일에 출력을 씁니다. –
$ url의 값은 www.url.co.uk/create와 같습니다.php – user559142