2013-09-16 3 views
0

저는 온라인 저널/일기 사이트를 가지고 있습니다. 사용자는 PHP 및 MYSQLi를 통해 일기 항목을 내 DB에 저장합니다.사용자를 위해 MYSQL DB 정보를 PDF 파일로 저장

사용자가 메뉴 링크를 클릭하여 모든 항목을 PDF 파일에 저장할 수있는 기능을 추가하고 싶습니다.

가장 좋은 방법은 무엇입니까? 나는 DOMPDF를 조사해 보았습니다. 쉽고 유망한 것처럼 보였습니다.하지만 작동 시키려면 며칠이 걸리고 다른 솔루션을 볼 준비가되어 있어야합니다.

어쩌면 많은 해결책을 찾을 수 있습니다. 나는 알아낼 3 일을 보내고 싶지 않습니다. 그것은 나를위한 것이 아니므로, 이런 식으로 일한 사람들, 당신을 위해 일한 사람들을 요구하고 있습니다.

업데이트 나는 dompdf를 사용할 수 있으며 매우 쉽고 멋지다. 내가 만난 문제는 많은 양의 HTML을 렌더링하려고하면 충돌이 발생한다는 것입니다. 코드와 관련된 메모리 문제 (Google 합의)가있는 것으로 보입니다. 예를 들어. 내 DB에는 603 개의 레코드가 있으며, 각 레코드에는 약 2 단의 텍스트 만 있습니다. 저에게 이것은 MYSQL DB 측면에서 제가 큰 것으로 생각할만한 것이 아닙니다.

최대 시간 초과 설정을 320 초로 늘려서 Apache를 손상시키지 않고 최대 400 개의 레코드를 읽을 수 있어야했습니다. LIMIT 400을 SQL 문에 추가하면 약 300 초가 걸릴 것이고 PDF 파일을 표시 할 것입니다. LIMIT를 450으로 늘리면 아파치가 손상됩니다. Apacher 오류는 잘못된 메모리 덮어 쓰기 등과 관련된 것이 었습니다. 따라서 400 레코드가 반환 될 때까지 나에게 잘 맞았고 렌더링 단계 중에는 약 450 개의 레코드에서 느려지거나 충돌 할 수있었습니다.

내가봤을 때 비슷한 문제로 많은 사람들을 찾은 것 같습니다. 이것은 DOMPDF가 FAQ 나 수정에서 언급하고 언급 할만한 것으로 보이지만 그렇지 않은 것으로 보입니다. 그럼에도 불구하고 나는 여전히 PDF 옵션을 좋아할 것입니다. 나는 단순히 사용자가 데이터를 텍스트 파일로 저장할 수 있도록 허용했다. 이것은 매우 간단한 PHP 코딩 (5 줄)이었고 즉시 파일로 내 데이터를 저장합니다.

$myFile = "pdjentries.txt"; 
$fo = fopen($myFile, 'w') or die("can't open file"); 

      $data = "ALL Your Entries from PersonalDreamJournal.com\r \n\r\n\r\n"; 

      while ($row = $Recordset1->fetch_assoc()) 
      { 

       $data .= date("m-d-Y", strtotime($row['date'])).'   '.$row['flag']. "\r\n";      
       $data .= $row['text']. "\r"; 
       $data .= "****************************************************************"; 
       $data .= "\r\n\r\n\r\n\r\n\r\n";     ; 

      } //end while 
        $data .='----END OF ALL ENTRIES-----'; 


header('Content-type: application/txt'); 
header('Content-Disposition: attachment; filename="pdj-entries.txt"'); 
echo $data; 
+0

dompdf에서 어떤 문제점이 있습니까? 일부 HTML 레이아웃은 문제가 될 수 있지만 HTML 페이지를 만드는 것과 같이 간단해야합니다. – BrianS

+0

@BrianS 나는 dompdf를 사용할 수 있으며 매우 쉽고 멋지다. 내가 만난 문제는 많은 양의 HTML을 렌더링하려고하면 충돌이 발생한다는 것입니다. 코드에 대한 메모리 문제가 내게 보입니다. –

+0

문서의 크기에 따라 그 가능성이 있습니다. 문서 구조와 관련 될 수도 있습니다 (예 : dompdf는 페이지 셀보다 높은 높이의 표 셀에 문제가 있음). – BrianS

답변

1

당신은 클라이언트에 정보를 전송 한 후 jsPDF 이용하여 PDF 클라이언트 측 렌더링 수 있습니다 : 여기

텍스트 파일에 데이터를 저장하는 코드의 고기입니다. 사용하기가 매우 쉽습니다.

관련 문제