Djangoからの矎しいPDF印刷

なぜなら この蚘事は数幎の実隓の結果であり、倚くの手玙がありたす。 しかし-おそらく-それは説明されおいるように、誰かがレヌキで䜕ヶ月もサむクリングするこずを節玄したす。
䞀般的なケヌスでは、これはDjangoでさえもではなく、テンプレヌト゚ンゞンを䜿甚しおPythonから芏制されたドキュメントを印刷するこずです。
さらに怠を読むために-私はすぐに蚀いたす-問題は完党に解決されおいたせん。 しかし、倚かれ少なかれ機胜するバヌゞョンが登堎したした。

1.課題




2.制限



最初の段階は、最終圢匏の遞択です。 さたざたなt.zでの熟考の埌。 クロスプラットフォヌム、保蚌された結果、倉換可胜性c遞択はPDFで決たりたした。
今-入力圢匏ずその倉換方法。

3.゜フトフォヌム


ODF

私たちは、Open Document Format-ODS、ODTなどに぀いお話しおいる。
ここではすべおが非垞に簡単です。

デヌタの堎所ナヌザヌ定矩フィヌルドをドキュメントに远加するか、{{django tags}}をテキストに盎接挿入したす。 最初のケヌスでは、これらのフィヌルドに埌でpythonから入力するこずはおそらく可胜ですが、どのように想像するこずもできたせんより正確には、衚瀺されるものはすべお非垞に玛らわしいようです したがっお、タグはテキスト圢匏で配眮するだけです。
この堎合、フィヌルドの入力は基本です-テンプレヌトをDjangoテンプレヌト゚ンゞンにフィヌドするだけですgentushkiのテンプレヌト内で遞択するためにPythonラむブラリを残したす:-)。 そしお、キックごずにドキュメントを解凍/圧瞮しないために、ドキュメントは* .fodXフラットXに保存されたす-唯䞀の解凍されたxml。 テンプレヌトはxmlずしお䟛絊されたす。
PDFの取埗-オプションなし-LibreOfficeの䜿甚LibreOfficeデヌモンlibreofficedubuntudersのどこかにありたすたたはunoconvをフィヌドするか、デヌモンモヌドでLOランチャヌを手動で実行したす。 これらのオプションはすべおほが同じです。
長所


欠点


たずめ

極端なフォヌルバックオプションずしお-適切。 しかし、同じくらい極端です。
HTML

ここでは、テンプレヌトの線集手䜜業ずテンプレヌト゚ンゞンスパヌクにより、すべおが明確になりたす。 小さいですが、䞻な質問が1぀ありたす-PDFを取埗する方法ですか 必芁に応じお改ペヌゞを䜿甚しお、すばやく効率的に。 そしお、これが最も実隓的でした。
玔粋なpython htmlレンダリングPISAや祖先/盞続人/フォヌクなどを䜿甚した倚数の実隓により、重芁なIMHO結論が導き出されたした。結果を保蚌するには、既補のhtml゚ンゞンを䜿甚する必芁がありたす。 そのうち、私たち皆が知っおいるように、最倧​​4通垞から。 これらのうち、Linuxではgeckoずwebkitの2぀たで䜿甚できたす。 Pythonからgeckoを呌び出すこずはほずんど可胜ですが、aXを実行する必芁がありたすLibreOfficeの堎合のようにb既補のレシピが芋぀かりたせんでした。
残りのWebkit

長所


欠点


たずめ

「゜フト」ドキュメントの䞻なオプション。 しかし、 高品質の玔粋なpython htmlレンダヌフラッシュ、JS、その他の挫画なしを探す必芁がありたすが、高品質のCSS凊理が必芁です。
たぶん

将来的には、TeX、LaTeX、Lyx、docbook圢匏が考慮されたすが、これたでのずころ利点はありたせん特に「ほが゜フトな」圢匏の堎合-同じ21001など。

4.ハヌドフォヌム


ここではすべおが悲しい。 特に、ここでは既にビゞュアル゚ディタが非垞に望たしいずいう事実に照らしお。
さらに、ロシア連邊の「ハヌド」フォヌムの倧郚分すべおではないにしおもでは、テキストが文字に分割されるずきに「正方圢」が䜿甚され、それぞれが独自の正方圢に収たりたす 䟋 。
最初のもの「tiffのプルテキスト」などを削陀し、ファむナリストに盎行したす。
RML

Reportlabの開発はい、python-reportlabは圌らのものですは通垞のXMLであり、PDFで䞍思議な仕事をするこずができたす。 なぜなら よく知られおいるpython-trml2pdfはすでにRIPです開発者が正盎に私に曞いたように-このtrml2pdfを取り、少し仕䞊げなければなりたせんでした。 RMLの倚くの興味深い機胜をサポヌトしおおらず、 宗教により商甚のrml2pdfを賌入するこずは犁じられおいたすさらに壊れおいたす。
長所


欠点

たずめ

正確な圢匏特に単玔な圢匏のフォヌルバック。
PDFフォヌム

ここではすべおが非垞に簡単です。PDFの゜ヌス-PDFの最終結果です。
  1. 巊手に元のPDFを取りたす
  2. 組み蟌みのDjangoテンプレヌト゚ンゞンによっお凊理されたXFDF気取らないxml-右偎
  3. それらを新しいPDFにマヌゞ取り蟌み「ロヌルアりト」-フラット化
  4. それをナヌザヌに枡したす

問題は1぀だけです-項目3。
これたで、PDFフォヌムを操䜜するためのネむティブで正しく機胜するpython APIは芋぀かりたせんでしたただし、popplerは既に䜕かを実行できたすが、明らかに、さらに倚くの機胜がありたす。したがっお、 iTextが唯䞀の蚱容可胜なオプションです。 pdftkたたは自転車を䜿甚するこずは、すでにあなたの奜みに合っおいたす。
長所


欠点


たずめ

正確な印刷フォヌムの䞻なオプション。

5.抂芁


今日圢成された合蚈


PS。 これがどのように機胜するか- ここで芋るこずができたす-ODFずRMLなしで、埌者が提䟛されたす。

Source: https://habr.com/ru/post/J148612/


All Articles