πΎ Archived View for gemini.strahinja.org βΊ blog βΊ 2021-10 βΊ 20211012.gmi captured on 2023-04-19 at 22:31:52. Gemini links have been rewritten to link to archived content
β¬ οΈ Previous capture (2022-03-01)
β‘οΈ Next capture (2024-06-20)
-=-=-=-=-=-=-
ΠΠΎΠ½Π΅ΠΊΠ°Π΄ ΡΠ΅ ΠΊΠΎΡΠΈΡΠ½ΠΎ ΠΈΠΌΠ°ΡΠΈ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ Π΄Π° ΡΠ΅ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΡΠ΅ΠΊΡΡΡΠ°Π»Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈ Ρ PDF. ΠΠ°ΡΠ°Π²Π½ΠΎ, ΡΠ΅ΠΊΡΡ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΡΠΈΡΠ°ΡΠΈ Ρ Π½Π΅ΠΊΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡ ΡΠ΅ΠΊΡΡΠ° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ Libre Office Writer, Π°Π»ΠΈ ΡΠ· CUPS, ΠΏΠΎΡΡΠΎΡΠΈ ΠΈ Π΄Π°Π»Π΅ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠ΅ ΡΠ΅ΡΠ΅ΡΠ΅, ΠΊΠΎΡΠ΅ Π½Π΅ Π·Π°Ρ ΡΠ΅Π²Π° ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ΅ ΡΠΏΠΎΡΠΈΡ Π³ΡΠ°ΡΠΈΡΠΊΠΈΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π·Π° ΡΠ°ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π°Π½ ΠΏΠΎΡΠ°ΠΎ.
CUPS ΠΈΠ·ΠΌΠ΅ΡΡ ΠΎΡΡΠ°Π»ΠΎΠ³ ΡΠ°Π΄ΡΠΆΠΈ ΠΈ CLI ΠΏΡΠΎΠ³ΡΠ°ΠΌ texttopdf, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΡΠΏΠΎΡΡΠ΅Π±ΠΈΡΠΈ Π·Π° βΡΡΠ°ΠΌΠΏΠ°ΡΠ΅β Ρ PDF. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π° Π±ΠΈΡΠΌΠΎ ΠΏΡΠ΅ΡΠ²ΠΎΡΠΈΠ»ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ file.txt Ρ file.pdf, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ:
$ CHARSET=utf-8 /usr/lib/cups/filter/texttopdf 1 1 1 1 1 \ < file.txt > file.pdf
ΠΠ΅ΡΡΡΠΈΠΌ, ΠΎΠ²Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌ Π΄ΠΎΠ·Π²ΠΎΡΠ°Π²Π° ΠΈ Π΄Π° Π·Π°Π΄Π°ΠΌΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΡΠ°Π½ ΡΠΎΠ½Ρ ΡΠ· ΠΏΠΎΠΌΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π·Π° Π·Π°Π΄Π°Π²Π°ΡΠ΅ ΠΊΠΎΠ΄Π½ΠΎΠ³ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π°. ΠΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°Π½ΠΎ, ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ Π½Π°Π»Π°Π·Π΅ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ /usr/share/cups/charsets. ΠΡΠΎΡΡΠΈΠΌ ΠΊΠΎΠΏΠΈΡΠ°ΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ /usr/share/cups/charsets/pdf.utf-8.simple Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ, ΡΠ΅ΡΠΈΠΌΠΎ ~/.config/cups/charsets/pdf.utf-8.custom, ΠΈ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ΠΌ ΡΠΈΠΌΠ±ΠΎΠ»ΠΈΡΠΊΠ΅ Π²Π΅Π·Π΅ ΠΎΠ΄ ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π΄ΠΎ pdf.utf-8 Ρ ΠΈΡΡΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌΡ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ texttopdf-Ρ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΡΠ°Π½ ΡΠΎΠ½Ρ, Π°ΠΊΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²Ρ CUPS_DATADIR.
$ CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \ /usr/lib/cups/filter/texttopdf 1 1 1 1 1 \ < file.txt > file.pdf
Π€ΠΎΠ½Ρ ΡΠ΅ ΠΌΠΎΠΆΠ΅ Π·Π°Π΄Π°ΡΠΈ Π½Π° Π΄Π²Π° Π½Π°ΡΠΈΠ½Π°: ΠΏΡΠ΅ΠΊΠΎ fontconfig-ΠΎΠ²ΠΎΠ³ ΠΈΠΌΠ΅Π½Π° ΡΠΎΠ½ΡΠ°, ΠΈΠ»ΠΈ ΠΏΡΠ΅ΠΊΠΎ Π°ΠΏΡΠΎΠ»ΡΡΠ½Π΅ ΠΏΡΡΠ°ΡΠ΅ ΠΊΠ° .ttf ΠΈΠ»ΠΈ .otf Π΄Π°ΡΠΎΡΠ΅ΡΠΈ. Π Π΅ΡΠΈΠΌΠΎ:
charset utf8 0000 04FF ltor single /usr/local/share/fonts/iosevkanf/Iosevka_Nerd_Font_Complete.ttf 0500 05FF rtol single /usr/local/share/fonts/iosevkanf/Iosevka_Nerd_Font_Complete.ttf 3000 9FFF ltor double ARPLUmingCN
ΠΏΠΎΡΡΠ°Π²ΡΠ° Π΄Π°ΡΠΈ TTF ΡΠΎΠ½Ρ ΠΊΠ°ΠΎ ΡΠΎΠ½Ρ ΠΊΠΎΡΠΈΠΌ ΡΠ΅ Π±ΠΈΡΠΈ ΠΈΡΠΏΠΈΡΠ°Π½ ΡΠ΅ΠΊΡΡ Ρ PDF Π΄Π°ΡΠΎΡΠ΅ΡΠΈ.
ΠΠ΅Π΄ΠΎΡΡΠ°ΡΠΈ ΠΎΠ²ΠΎΠ³ ΠΏΡΠΈΡΡΡΠΏΠ° ΡΡ, ΠΈΠΏΠ°ΠΊ, ΡΡΠΎ Π΄ΠΎΠ±ΠΈΡΠ΅Π½ΠΈ PDF Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΡΡΠ°ΠΆΡΡΠ΅ ΠΈ ΡΡΠΎ ΡΠ΅ ΡΠΎΠ½Ρ ΡΠ³ΡΠ°ΡΡΡΠ΅ Ρ ΡΠ΅Π»ΠΎΡΡΠΈ. ΠΠ²ΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΎΡΠΊΠ»ΠΎΠ½ΠΈΡΠΈ ΠΏΠΎΠ·ΠΈΠ²Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° pdftocairo ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠ° poppler:
$ pdftocairo file.pdf -pdf file-optimized.pdf
ΠΠΎΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌ texttopdf ΡΡΠ½ΠΊΡΠΈΠΎΠ½ΠΈΡΠ΅ ΠΊΠ°ΠΎ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π£Π½ΠΈΠΊΡ Π°Π»Π°ΡΠΈ, ΠΎΠ΄Π½ΠΎΡΠ½ΠΎ ΡΠΈΡΠ° ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΡΠ° stdin-Π° ΠΈ ΠΈΡΠΏΠΈΡΡΡΠ΅ ΠΈΡ Π½Π° stdout, ΠΎΠ²Π°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠΆΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ PDF Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΡΠ°ΠΌΠΎ ΠΎΠ΄ ΠΏΠΎΡΡΠΎΡΠ΅ΡΠ΅ ΡΠ΅ΠΊΡΡΡΠ°Π»Π½Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, Π²Π΅Ρ ΠΈ ΠΎΠ΄ ΠΏΡΠΎΠΈΠ·Π²ΠΎΡΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΠ΅Π½ΠΎΠ³ ΡΠ΅ΠΊΡΡΠ° ΠΏΠΎΡΠ»Π°ΡΠΎΠ³ Π½Π° stdin:
$ df -h | CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \ /usr/lib/cups/filter/texttopdf 1 1 1 1 1 \ > df-listing.pdf
Π Π΅ΡΠΈΠΌΠΎ, ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΈΡΠΊΠΎΡΠΈΡΡΠΈΡΠΈ ΠΌΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌ table Π΄Π° ΡΠ΅ ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° CSV Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈ ΠΈΠ·Π»Π°Π· ΠΊΠΎΠ½Π²Π΅ΡΡΡΡΠ΅ Ρ PDF. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π΅ΠΊΠ° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° sales.csv:
"Item","Q1 2020","Q2 2020","Q3 2020","Q4 2020" "Toothpick","15.2","12","","10" "Teapot","1.2","","5","3.5"
ΠΠ°ΡΠ΅Π΄Π±Π°ΠΌΠ°:
$ table -n sales.csv | CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \ /usr/lib/cups/filter/texttopdf 1 1 1 1 1 \ > sales-unoptimized.pdf $ pdftocairo sales-unoptimized.pdf -pdf sales.pdf
Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ sales.pdf:
$ ls -l -rw-r--r-- 1 strajder strajder 191159 12. ΠΎΠΊΡ. Ρ 20:24 sales-unoptimized.pdf -rw-r--r-- 1 strajder strajder 12459 12. ΠΎΠΊΡ. Ρ 20:25 sales.pdf
ΠΠΊΠΎ Π½Π°ΡΠ΅Π΄Π±Ρ ΠΊΠΎΡΠΎΠΌ ΠΏΠΎΠ·ΠΈΠ²Π°ΠΌΠΎ texttopdf βΡΠΏΠ°ΠΊΡΡΠ΅ΠΌΠΎβ Ρ Π°Π»ΠΈΡΠ°Ρ, Π½ΠΏΡ:
alias txt2pdf='CUPS_DATADIR=~/.config/cups CHARSET=utf-8 \ /usr/lib/cups/filter/texttopdf 1 1 1 1 1'
ΠΏΡΠ²Π° Π½Π°ΡΠ΅Π΄Π±Π° Π΄ΠΎΠ±ΠΈΡΠ° Π΄Π°Π»Π΅ΠΊΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΈΡΠΈ ΠΎΠ±Π»ΠΈΠΊ:
$ table -n sales.csv | txt2pdf > sales-unoptimized.pdf
ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΌΠΈΡΠ»ΠΈΠΌ Π΄Π° Π½Π΅ ΡΡΠ΅Π±Π° Π½ΠΈ ΠΏΠΎΠΌΠΈΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ΠΎ ΠΏΡΠΎΡΠ΅Ρ ΡΡΠ°ΡΠ΅ Π·Π½Π°ΡΠ½ΠΎ Π±ΡΠΆΠ΅ ΠΎΠ΄ ΡΠ°ΠΌΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° Π½Π΅ΠΊΠΎΠ³ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ° ΡΠ΅ΠΊΡΡΠ°.