mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-29 04:28:20 -06:00
M10: Two-sided starts at Printer default, so the printer's own duplex applies (#2422)
The Print dialog always sent its Two-sided choice, Off unless changed, so a two-sided default set in the printer's Properties never applied. Acrobat has no default of its own here and follows the printer's. Two-sided now starts at Printer default, which sends no duplex setting (craft-print's Job::duplex = None). Off and the two edges still override it. Cut and stack still sends Off, since it needs single-sided sheets. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
924c4da4ac
commit
3fbfa4e2af
+22
-22
@@ -7,7 +7,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Greek UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "cefa955aa92790d6773cb1d1e15e19019b3165a00528d57d6617362e1d1988ab"
|
||||
sha256 = "ab55155f8f6380fb23fe450aff8e40dff5b4cb1f50ae24c8a9ab976b78570c3a"
|
||||
|
||||
# ATTRIBUTION.toml: one entry per asset (AGENTS.md §1). The source of truth for provenance and licences.
|
||||
# ATTRIBUTION.md is generated from this file: `cargo xtask assets --write`. Checked by `cargo xtask assets` (part of `xtask ci`).
|
||||
@@ -30,7 +30,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Simplified Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "dbfebf4e9b2e9ac31ecf72202c2098173e72ebfaf90e9fee8f0563a6734fe31f"
|
||||
sha256 = "a4eb6808240d303170ca0beadc46b0c246ee30e3a30bdaaaa11631c342bfd817"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/zh-hant.tsv"
|
||||
@@ -41,7 +41,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Traditional Chinese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "0b0dafa3806a6b3508684f64e1f07b435113f8efd0e59201d12250c63c1d9547"
|
||||
sha256 = "65a0c9b8537f27346649455df42a030c76f06faa2797415500f3a631316d0230"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/cs.tsv"
|
||||
@@ -52,7 +52,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Czech UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "898a5240fa59cac42ef6b99cb60bcfca0094ac27370e1c8d020bd27936b56517"
|
||||
sha256 = "05593aedf7365d0d3cf5ea6104f9c7db439cae47917565267755ddc84cc12ad0"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/pt-br.tsv"
|
||||
@@ -63,7 +63,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Brazilian Portuguese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "b4745c94797575529cd0e78c18c71fa2c0dfddfbf19b9c40b41dc2057c6f6543"
|
||||
sha256 = "efdd1dc820ab9c9bbcd85c47dea9734a8185474cad813a9f53b027ed33b0b920"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/es.tsv"
|
||||
@@ -74,7 +74,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Spanish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "2acb3f6522d6d1f744343f474fe4c51ebec610a888a7fa83fc9422228e6fa3c1"
|
||||
sha256 = "f734e631389b6975842c895b25bb5d9538ec59e99662b86ad5f4071662b0482d"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/fr.tsv"
|
||||
@@ -85,7 +85,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "French UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "1b739478a4f186a49900cce84edbe136206a53b46340322df4caf77bb3fb5b12"
|
||||
sha256 = "660c42850bbcde194af1d37a0eb54c95f0026e64b20e12c6966c38287ed3bbda"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/de.tsv"
|
||||
@@ -96,7 +96,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "German UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "da3b71608ff7fe6e230b076207cee96ac01f66e068ca1be83af1ad56ac9c60eb"
|
||||
sha256 = "ef5f24485251bcdb7414f11612edc7ed717ec0ee50ed7b5f7c4fab719fc15a1f"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/te.tsv"
|
||||
@@ -107,7 +107,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Telugu UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "989d2e5f57cf22c21a85951835ca9fbd05e314da67eb4c17332df1f03679fa00"
|
||||
sha256 = "8f9c39cf5b8b9b026da8ccf9478bc08f7fc94f796ea93e57d262314985753004"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/it.tsv"
|
||||
@@ -118,7 +118,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Italian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "5e84916e3ad8670216360695689fe8fd624365a29886f66a3c655ba126892f5b"
|
||||
sha256 = "2572b6b58a29bac3dfa9d4800480ae5ba0e5bc84831c44930673bf0066d4acbc"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/pl.tsv"
|
||||
@@ -129,7 +129,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Polish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "988bcf2e0322a46c0464ff7b91ab5d90193b0ea7f454812d12595eb843de6fc7"
|
||||
sha256 = "7bd63fc65c3a891b794a4c6b3353fee127ba5e9a6e626339b977c5f6f8b0dd1c"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/ru.tsv"
|
||||
@@ -140,7 +140,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Russian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "084f4ea06f31c632ad90b0e87f66240ce5b5dc012ac7770987d44918ee66f452"
|
||||
sha256 = "7caff1c3546b1f7ce3edca0eacc24c5c4556bcadeceeefe1470e95e9e8555008"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/hu.tsv"
|
||||
@@ -151,7 +151,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Hungarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "973cd90ec34c8a973d146a0e2c73c1d632e17357c3d87ccf10c59e64d12c1587"
|
||||
sha256 = "17510c5039299cc35289775b4e6bca966f7312a0e3d1f1ede0d90902e85cf081"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/bg.tsv"
|
||||
@@ -162,7 +162,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Bulgarian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "485f85d4053c9661ddda2ed9394a0644c77b489feb598d02f12ef209e11f2ee3"
|
||||
sha256 = "958a7136eec752947ef200b7cb5b8e37ac5c9b6f59177eb51317e7cf184de06c"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/kk.tsv"
|
||||
@@ -173,7 +173,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Kazakh UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "24524864022ab2abeff68b5979519eee4e92134d0c4053d40c741bc7f01c249c"
|
||||
sha256 = "85e7ffec6e91bc2d8f2ab70bee3420dc4e576e38260efcac100a3d6bdf67228a"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/ja.tsv"
|
||||
@@ -184,7 +184,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Japanese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "bc6d123bdb34d5d7c22717fed1a86ff20e7e493acc1e155e61e61e2dc74459aa"
|
||||
sha256 = "4f776786c3c7260b7dc360a737f166dde95b79f8837d391ae6346a1b6f7358ce"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/uk.tsv"
|
||||
@@ -195,7 +195,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Ukrainian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "82678dbe730f56062037ea78de165b2c016b3fa670fb1cbfc7cd713eca900bac"
|
||||
sha256 = "9f1165faa16b01637bfc1ef2faf51102489e106228ba9893ab1ec1f540cda72f"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/ar.tsv"
|
||||
@@ -206,7 +206,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Arabic UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "304d661b27cdb5246f6b2974b4b5e78667f0928cda3588440be3d8f35f254679"
|
||||
sha256 = "cd1258152af7665554ed24f0deaf19f74d369f043d9e4142073ea4a901ebfe2f"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/tr.tsv"
|
||||
@@ -217,7 +217,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Turkish UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "05e2b7d5401166d362ba055120fba9a1645d6ec324997cf670e19fafcb0c54cf"
|
||||
sha256 = "36c78fe67a68d0373037532a8836d4c4950447f6a094469033c07b0c0578f063"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/lt.tsv"
|
||||
@@ -228,7 +228,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Lithuanian UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "17c8579e0e9d1524ffbeb87e7b30c14562dbaac64400826ee786cecfe31648fa"
|
||||
sha256 = "0c504821fe9702475402d5437e0a278dd42feaa566193af898c463789e680b72"
|
||||
|
||||
|
||||
[[asset]]
|
||||
@@ -3352,7 +3352,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Vietnamese UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "2d1c4b4276d02512a4e20101be95a1671de5c4f5cdfd661887af5ebab0db06a6"
|
||||
sha256 = "2cf0f9254b386f1635ae06600179b777b3e3a11d73654b711908ec73fd7655b1"
|
||||
|
||||
[[asset]]
|
||||
path = "crates/ui-egui/src/i18n/sl.tsv"
|
||||
@@ -3363,7 +3363,7 @@ licence = "MIT OR Apache-2.0"
|
||||
licence_file = "LICENSE-MIT"
|
||||
kind = "translation"
|
||||
usage = "Slovene UI strings, compiled in by crates/ui-egui/src/i18n/mod.rs"
|
||||
sha256 = "8f8a259264cda06eb6d9a9bf91dc7d873a8561213a9a9e7acbd32623bef40be0"
|
||||
sha256 = "fd5f8a28aa3db6d06634163c88bbb4003e77de0f5638d75c96e3fd5c5ff775ad"
|
||||
|
||||
[[asset]]
|
||||
|
||||
|
||||
@@ -1188,6 +1188,7 @@
|
||||
Off متوقف
|
||||
Flip on long edge قلب على الحافة الطويلة
|
||||
Flip on short edge قلب على الحافة القصيرة
|
||||
Printer default افتراضي الطابعة
|
||||
Paper: الورق:
|
||||
Pages to Print الصفحات المراد طباعتها
|
||||
More options: خيارات أخرى:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -869,6 +869,7 @@
|
||||
Off Изключено
|
||||
Flip on long edge Обръщане по дългия ръб
|
||||
Flip on short edge Обръщане по късия ръб
|
||||
Printer default По подразбиране за принтера
|
||||
Paper: Хартия:
|
||||
Pages to Print Страници за печат
|
||||
More options: Още опции:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 8 and column 16.
|
@@ -1256,6 +1256,7 @@ key Space Mezerník
|
||||
Off Vypnuto
|
||||
Flip on long edge Převrátit podle delší strany
|
||||
Flip on short edge Převrátit podle kratší strany
|
||||
Printer default Podle tiskárny
|
||||
Paper: Papír:
|
||||
Pages to Print Stránky k tisku
|
||||
More options: Další možnosti:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -1174,6 +1174,7 @@
|
||||
Off Aus
|
||||
Flip on long edge An langer Kante wenden
|
||||
Flip on short edge An kurzer Kante wenden
|
||||
Printer default Druckerstandard
|
||||
Paper: Papier:
|
||||
Pages to Print Zu druckende Seiten
|
||||
More options: Weitere Optionen:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 51.
|
@@ -763,6 +763,7 @@
|
||||
Two-sided: Εκτύπωση διπλής όψης:
|
||||
Flip on long edge Αναστροφή στη μεγάλη πλευρά
|
||||
Flip on short edge Αναστροφή στη μικρή πλευρά
|
||||
Printer default Προεπιλογή εκτυπωτή
|
||||
Paper: Χαρτί:
|
||||
Pages to Print Σελίδες προς εκτύπωση
|
||||
More options: Περισσότερες επιλογές:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 476 and column 9.
|
@@ -1183,6 +1183,7 @@
|
||||
Off Desactivado
|
||||
Flip on long edge Voltear por el borde largo
|
||||
Flip on short edge Voltear por el borde corto
|
||||
Printer default Predeterminado de la impresora
|
||||
Paper: Papel:
|
||||
Pages to Print Páginas que imprimir
|
||||
More options: Más opciones:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 60.
|
@@ -1169,6 +1169,7 @@
|
||||
Off Désactivé
|
||||
Flip on long edge Retourner sur le bord long
|
||||
Flip on short edge Retourner sur le bord court
|
||||
Printer default Par défaut de l'imprimante
|
||||
Paper: Papier :
|
||||
Pages to Print Pages à imprimer
|
||||
More options: Plus d'options :
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 39.
|
@@ -1159,6 +1159,7 @@
|
||||
Off Ki
|
||||
Flip on long edge Hosszú él mentén
|
||||
Flip on short edge Rövid él mentén
|
||||
Printer default Nyomtató alapértéke
|
||||
Paper: Papír:
|
||||
Pages to Print Nyomtatandó oldalak
|
||||
More options: További beállítások:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 7 and column 44.
|
@@ -1185,6 +1185,7 @@
|
||||
Off Disattivato
|
||||
Flip on long edge Rilegatura sul lato lungo
|
||||
Flip on short edge Rilegatura sul lato corto
|
||||
Printer default Come da stampante
|
||||
Paper: Carta:
|
||||
Pages to Print Pagine da stampare
|
||||
More options: Altre opzioni:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -1189,6 +1189,7 @@
|
||||
Off オフ
|
||||
Flip on long edge 長辺とじ
|
||||
Flip on short edge 短辺とじ
|
||||
Printer default プリンターの既定
|
||||
Paper: 用紙:
|
||||
Pages to Print 印刷するページ
|
||||
More options: 詳細オプション:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -1133,6 +1133,7 @@
|
||||
Off Өшірулі
|
||||
Flip on long edge Ұзын жиек бойынша аудару
|
||||
Flip on short edge Қысқа жиек бойынша аудару
|
||||
Printer default Принтер әдепкісі
|
||||
Paper: Қағаз:
|
||||
Pages to Print Басып шығарылатын беттер
|
||||
More options: Қосымша параметрлер:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 825 and column 9.
|
@@ -591,6 +591,7 @@
|
||||
Flip horizontal Apversti horizontaliai
|
||||
Flip on long edge Apversti per ilgąją kraštinę
|
||||
Flip on short edge Apversti per trumpąją kraštinę
|
||||
Printer default Pagal spausdintuvą
|
||||
Flip vertical Apversti vertikaliai
|
||||
Folders Aplankai
|
||||
Font Size: Šrifto dydis:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 404 and column 9.
|
@@ -1172,6 +1172,7 @@
|
||||
Off Wyłączony
|
||||
Flip on long edge Odwracaj wzdłuż długiej krawędzi
|
||||
Flip on short edge Odwracaj wzdłuż krótkiej krawędzi
|
||||
Printer default Domyślne drukarki
|
||||
Paper: Papier:
|
||||
Pages to Print Strony do wydrukowania
|
||||
More options: Więcej opcji:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -815,6 +815,7 @@
|
||||
Off Desativado
|
||||
Flip on long edge Virar na borda longa
|
||||
Flip on short edge Virar na borda curta
|
||||
Printer default Padrão da impressora
|
||||
Paper: Papel:
|
||||
Pages to Print Páginas a imprimir
|
||||
More options: Mais opções:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 9 and column 16.
|
@@ -1189,6 +1189,7 @@
|
||||
Off Выкл
|
||||
Flip on long edge Переворот по длинной стороне
|
||||
Flip on short edge Переворот по короткой стороне
|
||||
Printer default По умолчанию для принтера
|
||||
Paper: Бумага:
|
||||
Pages to Print Страницы для печати
|
||||
More options: Дополнительные параметры:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 9 and column 16.
|
@@ -837,6 +837,7 @@
|
||||
Flip image Prezrcali sliko
|
||||
Flip on long edge Obrni po dolgem robu
|
||||
Flip on short edge Obrni po kratkem robu
|
||||
Printer default Privzeto tiskalnika
|
||||
Flip vertical Prezrcali navpično
|
||||
Folders Mape
|
||||
Font Size: Velikost pisave:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 9 and column 16.
|
@@ -1159,6 +1159,7 @@ comment menu Edit సవరించు
|
||||
Off ఆఫ్
|
||||
Flip on long edge పొడవైన అంచున తిరగేయి
|
||||
Flip on short edge పొట్టి అంచున తిరగేయి
|
||||
Printer default ప్రింటర్ డిఫాల్ట్
|
||||
Paper: కాగితం:
|
||||
Pages to Print ముద్రించాల్సిన పేజీలు
|
||||
More options: మరిన్ని ఎంపికలు:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 13 and column 16.
|
@@ -1146,6 +1146,7 @@
|
||||
Off Kapalı
|
||||
Flip on long edge Uzun kenardan çevir
|
||||
Flip on short edge Kısa kenardan çevir
|
||||
Printer default Yazıcı varsayılanı
|
||||
Paper: Kağıt:
|
||||
Pages to Print Yazdırılacak Sayfalar
|
||||
More options: Diğer seçenekler:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 824 and column 9.
|
@@ -1186,6 +1186,7 @@
|
||||
Off Вимкнено
|
||||
Flip on long edge Перевертати за довгим краєм
|
||||
Flip on short edge Перевертати за коротким краєм
|
||||
Printer default За замовчуванням принтера
|
||||
Paper: Папір:
|
||||
Pages to Print Сторінки для друку
|
||||
More options: Додаткові параметри:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 6 and column 47.
|
@@ -588,6 +588,7 @@ theme Appearance Giao diện
|
||||
Flip horizontal Lật ngang
|
||||
Flip on long edge Lật theo cạnh dài
|
||||
Flip on short edge Lật theo cạnh ngắn
|
||||
Printer default Mặc định của máy in
|
||||
Flip vertical Lật dọc
|
||||
Folders Thư mục
|
||||
Font Size: Cỡ chữ:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 490 and column 12.
|
@@ -876,6 +876,7 @@
|
||||
Off 关
|
||||
Flip on long edge 沿长边翻转
|
||||
Flip on short edge 沿短边翻转
|
||||
Printer default 打印机默认
|
||||
Paper: 纸张:
|
||||
Pages to Print 要打印的页面
|
||||
More options: 更多选项:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 9 and column 16.
|
@@ -820,6 +820,7 @@
|
||||
Off 關
|
||||
Flip on long edge 沿長邊翻轉
|
||||
Flip on short edge 沿短邊翻轉
|
||||
Printer default 印表機預設
|
||||
Paper: 紙張:
|
||||
Pages to Print 要列印的頁面
|
||||
More options: 更多選項:
|
||||
|
||||
|
Can't render this file because it contains an unexpected character in line 9 and column 16.
|
@@ -51,7 +51,8 @@ pub struct PrintDraft {
|
||||
pub copies: u32,
|
||||
pub collate: bool,
|
||||
pub grayscale: bool,
|
||||
pub duplex: spool::Duplex,
|
||||
/// `None` = the printer's own default (its Properties), as Acrobat does.
|
||||
pub duplex: Option<spool::Duplex>,
|
||||
pub which: Which,
|
||||
pub range: String,
|
||||
/// The pages `Which::Selected` prints (0-based, in page order); empty when none were picked.
|
||||
@@ -106,7 +107,7 @@ impl Default for PrintDraft {
|
||||
copies: 1,
|
||||
collate: true,
|
||||
grayscale: false,
|
||||
duplex: spool::Duplex::Off,
|
||||
duplex: None,
|
||||
which: Which::All,
|
||||
range: String::new(),
|
||||
selected: Vec::new(),
|
||||
@@ -145,7 +146,7 @@ impl Default for PrintDraft {
|
||||
impl PrintDraft {
|
||||
/// The engine settings for this draft (page count and labels from the document).
|
||||
pub fn settings(&self, count: usize, labels: &[String]) -> Result<print::Settings, String> {
|
||||
if self.handling == Handling::Multiple && self.order == PageOrder::CutStack && self.duplex != spool::Duplex::Off {
|
||||
if self.cut_and_stack() && matches!(self.duplex, Some(spool::Duplex::LongEdge | spool::Duplex::ShortEdge)) {
|
||||
return Err("Cut and stack needs Two-sided: Off. Print single-sided sheets.".into());
|
||||
}
|
||||
let range = match self.which {
|
||||
@@ -188,12 +189,17 @@ impl PrintDraft {
|
||||
})
|
||||
}
|
||||
|
||||
fn cut_and_stack(&self) -> bool {
|
||||
self.handling == Handling::Multiple && self.order == PageOrder::CutStack
|
||||
}
|
||||
|
||||
pub fn job(&self, title: &str) -> spool::Job {
|
||||
spool::Job {
|
||||
printer: self.printer.clone(),
|
||||
copies: self.copies.max(1),
|
||||
collate: self.collate,
|
||||
duplex: Some(self.duplex),
|
||||
// Cut and stack needs single-sided sheets, whatever the printer's default.
|
||||
duplex: if self.cut_and_stack() { Some(spool::Duplex::Off) } else { self.duplex },
|
||||
scaling: spool::Scaling::Exact,
|
||||
grayscale: self.grayscale,
|
||||
title: title.to_string(),
|
||||
@@ -895,9 +901,10 @@ pub(crate) fn body(
|
||||
"duplex",
|
||||
&mut d.duplex,
|
||||
&[
|
||||
(spool::Duplex::Off, tl!("Off")),
|
||||
(spool::Duplex::LongEdge, tl!("Flip on long edge")),
|
||||
(spool::Duplex::ShortEdge, tl!("Flip on short edge")),
|
||||
(None, tl!("Printer default")),
|
||||
(Some(spool::Duplex::Off), tl!("Off")),
|
||||
(Some(spool::Duplex::LongEdge), tl!("Flip on long edge")),
|
||||
(Some(spool::Duplex::ShortEdge), tl!("Flip on short edge")),
|
||||
],
|
||||
160.0,
|
||||
);
|
||||
@@ -1274,11 +1281,25 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn composed_sheets_keep_exact_scaling_and_the_dialogs_duplex_choice() {
|
||||
let draft = PrintDraft { duplex: spool::Duplex::LongEdge, ..PrintDraft::default() };
|
||||
let draft = PrintDraft { duplex: Some(spool::Duplex::LongEdge), ..PrintDraft::default() };
|
||||
let job = draft.job("report.pdf");
|
||||
assert_eq!(job.scaling, spool::Scaling::Exact);
|
||||
assert_eq!(job.duplex, Some(spool::Duplex::LongEdge));
|
||||
assert_eq!(PrintDraft::default().job("report.pdf").duplex, Some(spool::Duplex::Off));
|
||||
let off = PrintDraft { duplex: Some(spool::Duplex::Off), ..PrintDraft::default() };
|
||||
assert_eq!(off.job("report.pdf").duplex, Some(spool::Duplex::Off));
|
||||
}
|
||||
|
||||
/// Untouched, Two-sided sends nothing, so the duplex set in the printer's Properties applies
|
||||
/// (#2422); cut and stack still asks for single-sided sheets.
|
||||
#[test]
|
||||
fn two_sided_follows_the_printer_until_chosen() {
|
||||
assert_eq!(PrintDraft::default().duplex, None);
|
||||
assert_eq!(PrintDraft::default().job("report.pdf").duplex, None);
|
||||
let mut cut = PrintDraft { handling: Handling::Multiple, order: PageOrder::CutStack, ..PrintDraft::default() };
|
||||
assert_eq!(cut.job("report.pdf").duplex, Some(spool::Duplex::Off));
|
||||
assert!(cut.settings(4, &[]).is_ok(), "the printer's default doesn't block cut and stack");
|
||||
cut.duplex = Some(spool::Duplex::ShortEdge);
|
||||
assert!(cut.settings(4, &[]).is_err());
|
||||
}
|
||||
|
||||
/// A job being spooled holds the progress card, counting its sheets as the spooler reports
|
||||
|
||||
@@ -182,11 +182,11 @@ fn cut_stack_dialog_previews_saves_and_refuses_duplex() {
|
||||
h.get_by_label("›").click();
|
||||
h.run_steps(2);
|
||||
h.get_by_label("Sheet 2 of 3");
|
||||
h.state_mut().print_draft.duplex = Duplex::LongEdge;
|
||||
h.state_mut().print_draft.duplex = Some(Duplex::LongEdge);
|
||||
h.run_steps(2);
|
||||
h.get_by_label_contains("Cut and stack needs Two-sided: Off");
|
||||
assert!(!h.state_mut().print_now());
|
||||
h.state_mut().print_draft.duplex = Duplex::Off;
|
||||
h.state_mut().print_draft.duplex = Some(Duplex::Off);
|
||||
h.state_mut().print_draft.printer = None;
|
||||
let out = std::env::temp_dir().join(format!("pdfcraft-cut-stack-ui-{}.pdf", std::process::id()));
|
||||
h.state_mut().save_override = Some(out.to_string_lossy().into_owned());
|
||||
|
||||
@@ -8020,8 +8020,8 @@ milestone = "M10"
|
||||
status = "shipped"
|
||||
commands = ["print.dialog"]
|
||||
tools = ["doc_print"]
|
||||
evidence = ["crates/print/src/tests.rs::spooler_arguments_and_printer_list"]
|
||||
notes = "long/short edge via the spooler: lp -o sides=…, and the Windows driver's Duplex setting"
|
||||
evidence = ["crates/print/src/tests.rs::spooler_arguments_and_printer_list", "crates/ui-egui/src/print_ui.rs::two_sided_follows_the_printer_until_chosen"]
|
||||
notes = "long/short edge via the spooler: lp -o sides=…, and the Windows driver's Duplex setting. Two-sided starts at Printer default, as in Acrobat: nothing is sent, so the printer's own default (its Properties) applies until Off or an edge is chosen. Missing: the document's /ViewerPreferences /Duplex preset isn't read yet"
|
||||
|
||||
[[feature]]
|
||||
id = "print.n-up"
|
||||
|
||||
Reference in New Issue
Block a user