4

現在、同じ外観を維持しながら、簡単に PDF に印刷できる形式に Web ページを変換しています。多くのpdfツールへの印刷では、背景画像/色を印刷できないため、テーブルのヘッダー要素の下に無地の画像を配置することでそれを回避しようとしています. 現在、次のようになっています。

<img src="/image.png" width="100%" style="margin-bottom:-90px">
<table><th>Header1</th><th>Header2</th>...

これは、ブラウザーを使用して通常表示すると、ヘッダー要素の背景が無地のように見えますが、pdf に印刷しようとすると、<th>要素の画像の上に空白の白い背景があります。これらの要素を画像に対してテキストで透明に見えるようにする方法はありますか? または、バックグラウンドの問題を回避する簡単な方法がありますか?

編集:
ここでの私の本当の問題は、可能な限り多くの htmltopdf ツールでページにアクセスできるようにするための回避策を作ろうとしていたことでした。これに対する私の解決策は、最初にサーバーにインストールする必要があったwkhtmltopdfを使用してページを印刷する単純なアプリを php で作成することでした。それが完了すると、ブラウザに関係なくpdfが見栄えがよくなりました!

4

3 に答える 3

2

When you "Print to PDF" a web page, the first responsibility lies with your browser to create the print job.

And in this case they have to create a PostScript file for the job. (Only the next stage, when the virtual "PDF printer" comes into play, creates the PDF from this PostScript input. Unlike LibreOffice, OpenOffice and MS Office, browsers are not [yet] able to directly "Export to PDF". Update: Apparently, Chrome does: as yms explains in a comment: open print dialog, use printer selection dropdown list to choose "Save as PDF". However, I found that by default it does not print backgrounds.)

Now you must consider two things:

  1. Most browsers do have settings, which allow for "print images"/"don't print images" and "print background colors"/"don't print background colors" and some such.

    So you should first ask yourself:

    • What are the settings of my browser for printing?

    • Is my browser handing over PostScript to the PDF printer which has the colors as I want them?

    If no, it's not the PDF printer's fault.

  2. As for the transparency features: PostScript does not support transparency (only PDF does). Therefor transparent areas need to be "flattened" for PostScript output (that is, transformed into bitmap images which try to mimic the look of transparent objects).

    However, not all applications and browsers are doing a good job when it comes to this "flattening".

    As long as you need to "Print to PDF", there is no chance in hell to get real transparency into the PDF file (you'll only get the 'mimikry' bitmaps).

Transparency here will only start to happen, once browsers start to be able to "Export to PDF". Or you may find a third-party tool, which can directly convert from HTML to PDF (without using the print intermediate step that converts to a printable PostScript first).

于 2012-08-02T00:39:00.487 に答える
1

@Kurt Pfeifle が述べたように、最適なオプションは、プリンターを介さずに HTML から PDF に直接変換するツールを使用することです。以下は、試すことができる 2 つの無料コンポーネントです。

  • wkhtmltopdfコマンド ライン アプリケーション。
  • Amyuni webkitpdf C# および C++ のバインディングを含む Windows ライブラリ。
于 2012-08-02T15:02:31.947 に答える
0

Google Chrome で解決策を見つけました。Windows 10 / Google Chrome バージョン 86.0.4240.111 で動作します。

印刷する前にページの最後まで行ってください。ここで、Ctrl+P を押して、宛先から「pdf として保存」を選択します。透明度のある PDF が作成されます。

印刷する前に html ページの最後まで行かないと、透明になりません!

于 2020-11-02T16:17:57.203 に答える