2016-11-27 3 views
1

私はUIWebViewです。私はAirPrintを使用してその内容を印刷したいと思います。私はこのコードを思いついた:テキストカラーでUIWebViewを印刷できません。どうして?

@IBAction func print(_ sender: Any) { 
    let printController = UIPrintInteractionController.shared 

    let printInfo = UIPrintInfo(dictionary:nil) 
    printInfo.outputType = UIPrintInfoOutputType.general 
    printInfo.jobName = "some name" 
    printController.printInfo = printInfo 

    let formatter = webView.viewPrintFormatter() 

    formatter.perPageContentInsets = UIEdgeInsets(top: 72, left: 72, bottom: 72, right: 72) 
    printController.printFormatter = formatter 

    printController.present(animated: true, completionHandler: nil) 
} 

私は、アプリを実行すると、印刷対話コントローラとすべてが動作します。

私はいくつかのテキストを強調したいので、しかし、私はhtmlの中にこれらのようなものを持っている:

<span style="color: #ff0000">some text</span> 

「いくつかのテキストは、」Web表示に赤い表示されますが、私は、プレビューを見たとき、それは黒ですプリント・インタラクション・コントローラーで!言い換えれば、すべての色が消えてしまった!

私はにHTMLを変更しようとしました:

<span style="background: #ff0000">some text</span> 

が、印刷プレビューが同じに表示されます。プレビューで<hr><h3>というタグがすべて正しくレンダリングされたため、私は非常に驚いていました。

色付きのテキストを印刷する方法はありますか?

注:

  • 私はは私はWebViewののスクリーンショットを取ると、それを印刷することができます知っている「模擬カラーレーザプリンタ」
  • を選択しました。しかし、画面に表示されているHTMLの部分だけを印刷するのではないでしょうか?
+0

引用した正確な範囲でHTMLページを設定し、UIWebViewに読み込んで印刷コードを使用して印刷したところ、赤いテキストが表示されます。問題の原因となっているものがあるようです。おそらく印刷していない実際のウェブサイトへのリンクを提供することはできますか? –

+0

@CraigGrummitt申し訳ありませんが、質問を編集できないようです。ここに私が作ろうとしていた編集へのペーストビンのリンクがあります:http://pastebin.com/raw/B87WUivY – Sweeper

+0

AppleはHTMLをPDFに変換するいくつかのコードを持っています。私はそれを試していないが、おそらくそれはあなたの問題を解決するhttps://github.com/ResearchKit/ResearchKit/blob/4f3d0f33df3ca96764ccac72a2dda729a567ac33/ResearchKit/Common/ORKHTMLPDFWriter.m –

答えて

1

はあなたのCSSのこのセクションを見てみましょう:

@media print { 
    *, 
    *:before, 
    *:after { 
    background: transparent !important; 
    color: #000 !important; 
    box-shadow: none !important; 
    text-shadow: none !important; 
    } 

この@media printセクションでは、それが印刷されたときに、あなたのコンテンツがどのように見えるかのための余分なルールを定義します。 link

このセクションには、*:after要素があり、ページの各要素の後にコンテンツが適用されます。この宣言を要素自体における色の宣言より重みを与える - あなたも!importantとしてこの色を宣言することによって、黒色の二重に確認し、(#000)黒の色を宣言*:afterセクション内link

。単純にカラーラインから!importantタグを削除

  1. link

    だからあなたがこれを解決するためのいくつかのオプションがあり

    色:#000;

  2. CSSからカラーライン全体を削除します。

  3. *:afterセクションをCSSから削除します。
  4. CSSから@media印刷セクションを削除します。

すべては、あなたが具体的に何をしたかによって異なります。

+0

ああ! CSSで印刷したときのページの外観を定義できることはわかりませんでした。私はそれを試みる! – Sweeper

関連する問題