簡體   English   中英

HTML2PDF 自動打印

[英]HTML2PDF automatic printing

有沒有一種簡單的方法可以讓 HTML2PDF 在將 pdf 輸出到瀏覽器時自動打開打印對話框窗口?

我嘗試在輸出之前設置 javascript - 我在 PDF 輸出后嘗試的標題沖突 - 我在 PDF 中嘗試沒有像 TCPDF 建議的那樣影響(我認為 HTML2PDF 是在這個庫上構建的)但由於 PDF 支持中沒有 JS,它不允許這樣做.

有沒有其他人知道的方法,或者我將不得不用 iframe 或 windows 破解某些東西並通過該方法聲明打印?

任何幫助表示贊賞。

打印內容取決於瀏覽器顯示PDF的方式。 如果讓瀏覽器將它們“正常”顯示為插件(Adobe,FoxIT)或其本地PDF顯示,那么您將無能為力,因為您無法使用JavaScript來訪問它們。

您可以使用pdf.js來使用JavaScript在可打印的畫布上呈現PDF,例如,參見使用pdf.js打印PDF。

一旦我在pyton上編寫腳本,該腳本將轉換HTML文檔並將其發送以進行自動打印。 這里的鏈接: https : //gist.github.com/stopfaner/9b30b2f04aa47c5fb480如果這對您有用,我會很高興

好吧,應該有一種方法,盡管我沒有更深入地探討它,但我希望這能激發其他人的靈感(如果有時間的話,我會繼續努力的)。

如本頁http://www.fpdf.org/en/script/script36.php所述 ,可以注入一些javascript(打開打印對話框)。 現在,此擴展名適用於FPDF,而不適用於HTML2PDF庫。

也許有,或者將要編寫一個HTML2PDF擴展名,但是我的直覺是,在創建文檔之后,僅使用純PHP會更容易。

如此處所述,應該很簡單:

提取現有的PDF,在文本編輯器中將其打開,找到/ Catalog,並在/ Pages引用后插入樣板,然后輸入代碼

(來源: http//bililite.com/blog/2012/06/06/adding-javascript-to-pdf-files/

如果我有更多信息或概念證明(使用HTML2PDF),我將進行更新。

編輯

我剛剛測試了這個概念,並且效果很好。 像示例中一樣,將此腳本插入/ Catalog之后,並在新行之后插入。

/Names << % the Javascript entry
  /JavaScript <<
    /Names [
      (EmbeddedJS)
      <<
        /S /JavaScript
        /JS (
          print(true);
        )
      >>
    ]
  >>
>> % end of the javascript entry

請注意,這僅適用於Adobe Reader或Acrobat Pro,可能不適用於其他PDF閱讀器(例如OSX中的預覽應用程序無法正常工作,但Chrome中的內置閱讀器工作正常)

編輯2-使用HTML2PDF庫進行概念驗證

$printCommand = <<<EOF

/Type /Catalog
 /Names <<
    /JavaScript <<
      /Names [
        (EmbeddedJS)
        <<
          /S /JavaScript
          /JS (
            print(true);
          )
        >>
      ]
    >>
  >>

EOF;

// Using the output method like this, you will get
// the raw ouput back to manipulate
$bin = $html2pdf->Output('', true);

// When the /Names block shows up somewhere later in
// in PDF code, it will override your script and will do nothing.
// This is just for proof of concept, you want to use regex here
if (strpos($bin, '/Names << >>') === false) {
    $bin = str_replace('/Type /Catalog', $printCommand, $bin);
} else {
    $printCommand = str_replace('/Type /Catalog', '', $printCommand);
    $bin = str_replace('/Names << >>', $printCommand, $bin);
}

// Since we don't use the output function from HTML2PDF,
// you have to set the headers manually
header('Content-Type: application/pdf');
header('Cache-Control: public, must-revalidate, max-age=0'); 
header('Pragma: public');
header('Expires: Sat, 29 Jun 1985 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Content-Disposition: inline; filename="your-pdf-title";');

echo $bin;
exit;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM