快速总结:返回的纸张尺寸看起来lpoptions
像“w154h64”,但使用 libcups API 返回的纸张尺寸看起来像“custom_54.19x22.27mm_54.19x22.27mm”。
笔记:这是在 Ubuntu 20.04.6 LTS 上,带有 CUPS 2.3.1。
当我用来lpoptions
获取 DYMO LabelWriter 450 Turbo 打印机的纸张尺寸时,这就是我得到的。 (为了清晰起见,输出已换行。)
$ lpoptions -p LabelWriter-450-Turbo -l
PageSize/Media Size: w154h64 w72h154 w72h72 w162h90 w54h144 w118h252
w167h188 w79h252 w167h252 *w167h288 w154h198 w82h248 w154h64.1
w79h252.1 w102h252 w154h286 w154h198.1 w54h424 w131h221 w57h248
w54h144.1 w72h72.1 w72h72.2 w162h90.1 30334_2-1_4_in_x_1-1_4_in w73h86
w72h154.1 w118h252.1 w54h203 w54h180 w36h136 w72h108 w65h90 w167h288.1
w168h252 w144h169 w71h144 w144h252 w80h144 w162h504
30383_PC_Postage_3-Part w167h540 30384_PC_Postage_2-Part w167h756
30387_PC_Postage_EPS w167h188.1 w176h292 w167h288.2 w112h126 w79h252.2
w102h252.1 w154h286.1 w154h286.2 w154h198.2 w63h419 w139h221 w36h144
w108h539 w167h539 w154h7680 w154h792 Custom.WIDTHxHEIGHT
Resolution/Output Resolution: *300dpi 300x600dpi
DymoHalftoning/Halftoning: Default *ErrorDiffusion NLL
DymoPrintDensity/Print Density: Light Medium *Normal Dark
DymoPrintQuality/Print Quality: *Text Graphics
我希望能够使用 libcups API 以编程方式获取相同的纸张尺寸列表。我编写了这个程序,它以两种不同的方式获取纸张尺寸。 (cupsFindDestSupported
和
cupsGetDestMediaByIndex
) 这两种方式彼此一致,但与我得到的完全不同lpoptions
。
程序:
/* Compile with:
* gcc -o media `cups-config --cflags` media.c `cups-config --libs`
*/
#include <stdio.h>
#include <cups/cups.h>
int print_dest(void *user_data, unsigned unused_flags, cups_dest_t *dest)
{
if (dest->instance)
printf("%s/%s\n", dest->name, dest->instance);
else
puts(dest->name);
cups_dinfo_t *info = cupsCopyDestInfo (CUPS_HTTP_DEFAULT, dest);
if (cupsCheckDestSupported(CUPS_HTTP_DEFAULT, dest, info,
CUPS_MEDIA, NULL)) {
ipp_attribute_t *media =
cupsFindDestSupported(CUPS_HTTP_DEFAULT, dest, info,
CUPS_MEDIA);
int i, count = ippGetCount(media);
puts("media supported:");
for (i = 0; i < count; i ++)
printf(" %s\n", ippGetString(media, i, NULL));
}
unsigned flags = 0;
cups_size_t size;
int i;
int count = cupsGetDestMediaCount(CUPS_HTTP_DEFAULT,
dest, info,
flags);
printf ("count = %d\n", count);
for (i = 0; i < count; i ++) {
if (cupsGetDestMediaByIndex(CUPS_HTTP_DEFAULT, dest, info,
i, flags,
&size)) {
const char *loc =
cupsLocalizeDestMedia (CUPS_HTTP_DEFAULT, dest, info,
flags, &size);
printf(" %s:\n", size.media);
printf(" Local: %s\n", loc ? loc : "N/A");
printf(" Width: %.2fin\n", size.width / 2540.0);
printf(" Length: %.2fin\n", size.length / 2540.0);
printf(" Bottom: %.2fin\n", size.bottom / 2540.0);
printf(" Left: %.2fin\n", size.left / 2540.0);
printf(" Right: %.2fin\n", size.right / 2540.0);
printf(" Top: %.2fin\n", size.top / 2540.0);
}
}
return (1);
}
int main(void)
{
cupsEnumDests(CUPS_DEST_FLAGS_NONE, 1000, NULL, 0, 0, print_dest, NULL);
return (0);
}
该程序的输出:
LabelWriter-450-Turbo
media supported:
custom_54.19x22.27mm_54.19x22.27mm
custom_25.4x54.02mm_25.4x54.02mm
custom_1x1in_1x1in
custom_2.25x1.25in_2.25x1.25in
custom_0.75x2in_0.75x2in
custom_41.32x88.9mm_41.32x88.9mm
custom_58.67x66.04mm_58.67x66.04mm
custom_27.86x88.9mm_27.86x88.9mm
custom_58.67x88.9mm_58.67x88.9mm
custom_58.76x101.6mm_58.76x101.6mm
custom_54.02x69.85mm_54.02x69.85mm
custom_28.62x87.29mm_28.62x87.29mm
custom_35.73x88.56mm_35.73x88.56mm
custom_54.02x100.84mm_54.02x100.84mm
custom_19.05x149.27mm_19.05x149.27mm
custom_46.06x77.81mm_46.06x77.81mm
custom_19.9x87.29mm_19.9x87.29mm
custom_25.74x30.14mm_25.74x30.14mm
custom_19.05x71.46mm_19.05x71.46mm
custom_0.75x2.5in_0.75x2.5in
custom_12.7x47.67mm_12.7x47.67mm
custom_1x1.5in_1x1.5in
custom_22.86x31.75mm_22.86x31.75mm
custom_58.93x88.9mm_58.93x88.9mm
custom_50.8x59.52mm_50.8x59.52mm
custom_24.81x50.8mm_24.81x50.8mm
custom_2x3.5in_2x3.5in
custom_27.94x50.8mm_27.94x50.8mm
custom_2.25x7in_2.25x7in
custom_58.76x190.5mm_58.76x190.5mm
custom_58.76x266.7mm_58.76x266.7mm
custom_61.89x102.87mm_61.89x102.87mm
custom_39.29x44.45mm_39.29x44.45mm
custom_22.01x147.66mm_22.01x147.66mm
custom_49.02x77.81mm_49.02x77.81mm
custom_0.5x2in_0.5x2in
custom_38.02x189.99mm_38.02x189.99mm
custom_58.76x189.99mm_58.76x189.99mm
custom_54.02x2709.33mm_54.02x2709.33mm
custom_54.02x279.4mm_54.02x279.4mm
custom_min_3.53x3.53mm
custom_max_56.9x2709.33mm
count = 40
custom_12.7x47.67mm_12.7x47.67mm:
Local: N/A
Width: 0.50in
Length: 1.88in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_0.5x2in_0.5x2in:
Local: N/A
Width: 0.50in
Length: 2.00in
Bottom: 0.06in
Left: 0.04in
Right: 0.04in
Top: 0.22in
custom_0.75x2in_0.75x2in:
Local: N/A
Width: 0.75in
Length: 2.00in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_0.75x2.5in_0.75x2.5in:
Local: N/A
Width: 0.75in
Length: 2.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_19.05x71.46mm_19.05x71.46mm:
Local: N/A
Width: 0.75in
Length: 2.81in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_19.05x149.27mm_19.05x149.27mm:
Local: N/A
Width: 0.75in
Length: 5.88in
Bottom: 0.06in
Left: 0.04in
Right: 0.04in
Top: 0.22in
custom_19.9x87.29mm_19.9x87.29mm:
Local: N/A
Width: 0.78in
Length: 3.44in
Bottom: 0.06in
Left: 0.00in
Right: 0.04in
Top: 0.22in
custom_22.01x147.66mm_22.01x147.66mm:
Local: N/A
Width: 0.87in
Length: 5.81in
Bottom: 0.06in
Left: 0.00in
Right: 0.04in
Top: 0.23in
custom_22.86x31.75mm_22.86x31.75mm:
Local: N/A
Width: 0.90in
Length: 1.25in
Bottom: 0.06in
Left: 0.07in
Right: 0.04in
Top: 0.23in
custom_24.81x50.8mm_24.81x50.8mm:
Local: N/A
Width: 0.98in
Length: 2.00in
Bottom: 1.19in
Left: 0.00in
Right: 0.04in
Top: 0.06in
custom_1x1in_1x1in:
Local: N/A
Width: 1.00in
Length: 1.00in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.09in
custom_1x1.5in_1x1.5in:
Local: N/A
Width: 1.00in
Length: 1.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_25.4x54.02mm_25.4x54.02mm:
Local: N/A
Width: 1.00in
Length: 2.13in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.09in
custom_25.74x30.14mm_25.74x30.14mm:
Local: N/A
Width: 1.01in
Length: 1.19in
Bottom: 0.06in
Left: 0.00in
Right: 0.04in
Top: 0.06in
custom_27.86x88.9mm_27.86x88.9mm:
Local: N/A
Width: 1.10in
Length: 3.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_27.94x50.8mm_27.94x50.8mm:
Local: N/A
Width: 1.10in
Length: 2.00in
Bottom: 0.06in
Left: 0.12in
Right: 0.04in
Top: 0.31in
custom_28.62x87.29mm_28.62x87.29mm:
Local: N/A
Width: 1.13in
Length: 3.44in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.20in
custom_35.73x88.56mm_35.73x88.56mm:
Local: N/A
Width: 1.41in
Length: 3.49in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_38.02x189.99mm_38.02x189.99mm:
Local: N/A
Width: 1.50in
Length: 7.48in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_39.29x44.45mm_39.29x44.45mm:
Local: N/A
Width: 1.55in
Length: 1.75in
Bottom: 0.25in
Left: 0.06in
Right: 0.13in
Top: 0.22in
custom_41.32x88.9mm_41.32x88.9mm:
Local: N/A
Width: 1.63in
Length: 3.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_46.06x77.81mm_46.06x77.81mm:
Local: N/A
Width: 1.81in
Length: 3.06in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_49.02x77.81mm_49.02x77.81mm:
Local: N/A
Width: 1.93in
Length: 3.06in
Bottom: 0.06in
Left: 0.00in
Right: 0.04in
Top: 0.22in
custom_50.8x59.52mm_50.8x59.52mm:
Local: N/A
Width: 2.00in
Length: 2.34in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_2x3.5in_2x3.5in:
Local: N/A
Width: 2.00in
Length: 3.50in
Bottom: 0.06in
Left: 0.12in
Right: 0.04in
Top: 0.37in
custom_54.02x69.85mm_54.02x69.85mm:
Local: N/A
Width: 2.13in
Length: 2.75in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_54.02x100.84mm_54.02x100.84mm:
Local: N/A
Width: 2.13in
Length: 3.97in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.21in
custom_54.02x279.4mm_54.02x279.4mm:
Local: N/A
Width: 2.13in
Length: 11.00in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_54.02x2709.33mm_54.02x2709.33mm:
Local: N/A
Width: 2.13in
Length: 106.67in
Bottom: 0.24in
Left: 0.06in
Right: 0.07in
Top: 0.22in
custom_54.19x22.27mm_54.19x22.27mm:
Local: N/A
Width: 2.13in
Length: 0.88in
Bottom: 0.06in
Left: 0.00in
Right: 0.04in
Top: 0.06in
custom_2.25x1.25in_2.25x1.25in:
Local: N/A
Width: 2.25in
Length: 1.25in
Bottom: 0.06in
Left: 0.04in
Right: 0.04in
Top: 0.06in
custom_2.25x7in_2.25x7in:
Local: N/A
Width: 2.25in
Length: 7.00in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_58.67x66.04mm_58.67x66.04mm:
Local: N/A
Width: 2.31in
Length: 2.60in
Bottom: 0.24in
Left: 0.06in
Right: 0.07in
Top: 0.23in
custom_58.67x88.9mm_58.67x88.9mm:
Local: N/A
Width: 2.31in
Length: 3.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_58.76x101.6mm_58.76x101.6mm:
Local: N/A
Width: 2.31in
Length: 4.00in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.23in
custom_58.76x189.99mm_58.76x189.99mm:
Local: N/A
Width: 2.31in
Length: 7.48in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_58.76x190.5mm_58.76x190.5mm:
Local: N/A
Width: 2.31in
Length: 7.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_58.76x266.7mm_58.76x266.7mm:
Local: N/A
Width: 2.31in
Length: 10.50in
Bottom: 0.06in
Left: 0.06in
Right: 0.04in
Top: 0.22in
custom_58.93x88.9mm_58.93x88.9mm:
Local: N/A
Width: 2.32in
Length: 3.50in
Bottom: 0.06in
Left: 0.00in
Right: 0.08in
Top: 0.37in
custom_61.89x102.87mm_61.89x102.87mm:
Local: N/A
Width: 2.44in
Length: 4.05in
Bottom: 0.06in
Left: 0.00in
Right: 0.20in
Top: 0.37in
这是怎么回事,如何获取 报告的纸张尺寸列表lpoptions
? (除了解析lpoptions
结果之外。)
谢谢!