2013-11-19 4 views
2

Я использую «pdfcrowd HTML to PDF API для PHP» для создания файлов PDF из файла PHP и smarty. Я могу сгенерировать PDF, но не смог поместить фоновое изображение водяного знака в PDF, который я распечатываю. Я пробовал все, но не мог поместить изображение водяного знака. Может ли кто-нибудь направить меня в этом отношении? Где я ошибаюсь? Любая помощь была бы весьма признательна. Ниже приведен мой код для справки:Как установить фоновое изображение водяного знака с помощью pdfcrowd HTML для API PDF для PHP?

<?php 
    set_time_limit(0); 

    require_once("../../includes/application-header.php"); 
    require_once OCN_ROOT."/core/extention/pdfcrowd/pdfcrowd_config.php"; 
    require_once OCN_ROOT."/core/extention/pdfcrowd/pdfcrowd.php"; 

try 
    { 
    // create an API client instance 
    $client = new Pdfcrowd($username, $apikey); 
$objPracticeSheet = new PracticeSheet(); 
$practice_sheet_id = $_GET['practice_sheet_id']; 

    $bread_crumbs_text = 'View Practice Sheet'; 

    $practice_details = $objPracticeSheet->ViewPracticeSheet($practice_sheet_id); 

    $practice_sheet_details = $objPracticeSheet->GetPracticeSheetDetailsById($practice_sheet_id); 

    $smarty->assign('bread_crumbs_text', $bread_crumbs_text); 
    $smarty->assign('practice_sheet_name', $practice_sheet_details['practice_sheet_name']); 
    $smarty->assign("practice_details", $practice_details); 
    $smarty->assign("practice_sheet_questions", $practice_sheet_details['practice_sheet_total_questions']); 
    $smarty->assign("practice_sheet_display_date", $practice_sheet_details['practice_sheet_display_date']); 
    $smarty->assign("practice_sheet_for", $practice_sheet_details['practice_sheet_for']); 

    $file_to_show = "pdf-practice-sheet.tpl"; 

    $final_data = $smarty->fetch($file_to_show); 

    $file = fopen(ADMIN_ROOT."temp/pdf_practice_sheet.html", "w+"); 
    file_put_contents($file, ""); 

    fwrite($file, $final_data); 
    fclose($file); 
    $client->setHeaderHtml($header_html); 
    $client->setFooterHtml("<table border='0' width='100%' cellpadding='5' cellspacing='0' style='font-size:10px;font-family:verdana;background:#EFBC8F;margin-top:10px;'><tr><td align='left'>Powered by EntrancePrime.com : 
     India's Favourite Online Test Series for JEE, NEET, & CA-CPT</td><td align='right'>Page %p/%n</td></tr></table>"); 
    $client->setPageWidth("210mm"); 
    $client->setPageHeight("298mm");  
    $client->setNoCopy('True'); 
    //$client->setVerticalMargin("0.8in"); 
    $client->setPageMargins("1.1in","0.2in","0.4in","0.2in"); 

    //Set watermark 
    $client->setWatermarkInBackground(True); 
    $client->setWatermark("'".ADMIN_SITE_URL."assets/img/watermark.png'", -28, 406); 

    $pdf = $client->convertFile(ADMIN_ROOT."temp/pdf_practice_sheet.html"); 
    $filename = $practice_sheet_details['practice_sheet_name']; 
    // set HTTP response headers 
    header("Content-Type: application/pdf"); 
    header("Cache-Control: no-cache"); 
    header("Accept-Ranges: none"); 
    header("Content-Disposition: attachment; filename=\"" . $filename . ".pdf\""); 
    // send the generated PDF 
    echo $pdf; 
} 
catch(PdfcrowdException $why) 
{ 
    echo "Pdfcrowd Error: " . $why; 
} 
?> 

С нетерпением жду ответа.

+0

Что именно «не работает»? –

+0

@ tereško: Я не могу помещать фоновые водяные знаки в созданный PDF-файл. Это единственная проблема, с которой я сталкиваюсь. Если у вас есть какой-либо способ решить эту проблему, это будет очень полезно для меня. – PHPLover

ответ

0

Попробуйте использовать абсолютный URL (http://www.yoursite.com/image.png) в этом $client->setWatermark("'".ADMIN_SITE_URL."assets/img/watermark.png'", -28, 406);

И посмотреть, что получится. Это похоже на вопрос о пути для меня. Удачи.

+0

: Путь не является проблемой. Я определил константу, чтобы сохранить единообразие в коде и упростить задачу настройки. Если вы попробуете, поместив голый URL в адресную строку браузера, и он отобразит мне изображение. Так что, конечно, нет проблемы с пути изображения. – PHPLover

+0

Вы не поняли. Каков ваш постоянный тогда? С или без/в конце? Если изображение отображается с открытым URL-адресом, значит, ваш код был правильным, вы просто не указали правильный путь для его получения. – Godinall

+0

: У меня очень хорошо. Если я печатаю константу ADMIN_SITE_URL, она перекликается с http: // localhost/abc/pqr/web/control /, и если я печатаю весь путь, тогда он печатает «http: // localhost/eprime/entprm/web/control/assets/img/upload_users.png 'Строка в одинарных кавычках. Поэтому я считаю, что нет никакой проблемы в отношении пути. Есть и другая проблема. – PHPLover