8

さて、ここで私がやりたいことです。ユーザーのドキュメントを PDF に印刷し、デバイスに送信する前にいくつかのヘッダーを追加する印刷オプションを追加したいと考えています。

私の質問は次のとおりだと思います:PDFを作成する開発中のアプリケーションを起動するユーザー用の仮想「プリンター」ドライバーを追加するにはどうすればよいですか(またはPDFを作成し、新しく生成されたPDFへの参照を使用してアプリケーションを起動します)? CUPS と連携して PDF を生成するにはどうすればよいですか? 私は明確であるかどうかわからないので、より多くの情報が役立つかどうかを教えてください.

CUPS チュートリアルを使用してこの印刷を行ったところ、すべてが正常にセットアップされたように見えますが、ファイルが適切な一時的な場所に表示されないようです。そして、誰かがユーザーエンドの PDF プリンターを探している場合、この cups-pdf-for-mac-os-xはインストーラーを介して動作するものですが、指定されたディレクトリにファイルが表示されないという同じ問題があります。ソースをダウンロードし、readme の指示に従います。ターミナルを介してこれらのいずれかをMacで動作させることができる場合は、どのように行ったかを順を追って教えてください。

4

2 に答える 2

12

行く方法は次のとおりです。

  • 任意のドライバーで印刷キューを設定します。ただし、PostScript ドライバー/PPD を使用することをお勧めします。(PostScript PPD は、行を含まないもの*cupsFilter: ...です。):

  • 最初に、という名前の (教育用) CUPS バックエンドを使用します2dir。これは、この Web サイトからコピーできます: KDE 印刷開発者ツール Wikiコピーするときは、行末が正しいことを確認してください (Unix のように)。

  • 初期キューを設定するコマンドライン:

    lpadmin\
        -p pdfqueue \
        -v 2dir:/tmp/pdfqueue\
        -E \
        -P /path/to/postscript-printer.ppd
    
    バックエンドはすべての2dir出力をディレクトリに書き込み/tmp/pdfqueue/、各ジョブに一意の名前を使用します。今のところ、各結果はPostScript ファイルである必要があります。(まだ必要な変更はありません)。

  • このキューで使用される PPD を見つけます/etc/cups/ppd/(その名前は である必要がありますpdfqueue.ppd)。

  • 次の行を追加します (PPD の上部付近が最適です)。

    *cupsFilter: "application/pdf 0 -"
    *cupsFilter(が行の最初から始まることを確認してください。) この行はcupsd、PDF を生成するフィルタリング チェーンを自動設定し、バックエンド経由でファイルをプリンター'-'に送信する前に、最後に指定されたフィルターを呼び出すように指示します。そのフィルターは特別なものです。何もしない、パススルーフィルターです。'-'

  • CUPS スケジューラを再起動します。

    sudo launchctl unload /System/Library/LaunchDaemons/org.cups.cupsd.plist
    sudo launchctl load /System/Library/LaunchDaemons/org.cups.cupsd.plist

  • これからは、pdfqueue印刷された各ジョブ/tmp/pdfqueue/*.pdf.

  • 2dirバックエンド スクリプトを調べます。これは単純な Bash であり、かなり適切にコメントされています。

  • 結果2dirを保存する前に、必要な変更を PDF に追加する方法で を変更します/tmp/pdfqueue/*.pdf


更新:上記 の最初に規定した行で 2 つの引用符を忘れた*cupsFilter: ...ようです。ごめん!

于 2012-06-25T18:00:59.730 に答える
5

@Kurt PfeifleのMac固有のヘルプと、プリンタードライバーとファイルの場所を理解するだけでは、これを行うことはできなかったと思うので、2つの答えを受け入れることができれば幸いです。しかし、ここに私がしたことがあります:


  1. codepoet cups-pdf-for-mac-os-xからソース コードをダウンロードします。(Mac 以外の場合は、http://www.cups-pdf.de/ を参照してください) readme は非常に詳細であり、すべての指示を注意深く読めば機能しますが、すべてを取得するのに少し苦労しましたピースなので、他の誰かのトラブルを救うことを期待して、私が何をしたかを正確に概説します. このため、ソース コードのあるディレクトリは「cups-pdfdownloaddir」と呼ばれます。

  2. readme の指定に従って、src フォルダーに含まれる cups-pdf.c をコンパイルします。

    gcc -09 -s -lcups -o cups-pdf cups-pdf.c

    警告があるかもしれません: ld: warning: option -s is obsolete and being ignored、しかし、これは私にとって問題を引き起こしませんでした。バイナリを /usr/libexec/cups/backend にコピーします。sudoパスワードの入力を求めるコマンドが必要になる可能性があります。例えば:

    sudo cp /cups-pdfdownloaddir/src/cups-pdf /usr/libexec/cups/backend

    また、このファイルのパーミッションを変更することを忘れないでください。root パーミッション (700) が必要です。これは、cupd-pdf をバックエンド ディレクトリに移動した後、次のように変更できます。

    sudo chmod 700 /usr/libexec/cups/backend/cups-pdf

  3. /cups-pdfdownloaddir/extra/cups-pdf.conf に含まれるファイルを編集します。「PDF 変換設定」ヘッダーの下で、GhostScript の下にある行を見つけます#GhostScript /usr/bin/gs。必要な場合に備えてコメントを外しませんでしたが、その行の下に追加しただけGhostscript /usr/bin/pstopdfです。(これらの変更にはプリカーソル # はありません)

    GSCall の下で#GSCall %s -q -dCompatibilityLevel=%s -dNOPAUSE -dBATCH -dSAFER -sDEVICE=pdfwrite -sOutputFile="%s" -dAutoRotatePage\ s=/PageByPage -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dPDFSETTINGS=/prepress -c .setpdfwrite \ -f %s 、コメントを外さずに Again と表示されている行を見つけます。この下に、次の行を追加しました。GSCall %s %s -o %s %s

    PDFVer の下にある行を見つけて、スペースや後続の文字を入れず#PDFVer 1.4に に変更します。PDFVer

    次のコマンドでこのファイルを /etc/cups にコピーする前に、保存して編集を終了します。

    sudo cp cups-pdfdownloaddir/extra/cups-pdf.conf /etc/cups

    UNIX と Mac 環境の改行は異なり、スクリプトを台無しにする可能性があるため、テキスト エディターでの編集には注意してください。いつでも perl コマンドを使用してそれらを削除できますが、私は偏執的で、そもそもそれを処理したくない.

  4. これで、プログラム (Word、Excel など) を開き、[ファイル] >> [印刷] を選択して、CUPS-PDF という使用可能なプリンターを見つけることができるはずです。このプリンターに印刷すると、デフォルトで /var/spool/cups-pdf/yourusername/ に PDF が見つかるはずです。


*また、これは私を助けたので役立つかもしれないと考えました: これらの指示に従って何かが台無しになり、最初からやり直す/それを取り除く必要がある場合は、(1) カップを取り外す必要があるドライバーを削除する必要があります-pdf backend from /usr/libexec/cups/backend(2) remove the cups-pdf.conf from /etc/cups/(3) System Preferences >> Print & Fax に移動し、CUPS-PDF プリンターを削除します。


これは、私が自分で pdf バックエンド/フィルターを正常にセットアップする方法ですが、readme ファイルに含まれるカスタマイズに関する詳細とその他の情報があります。これが他の誰かに役立つことを願っています!

于 2012-07-03T14:22:49.543 に答える