สำหรับการเขียนสคริปต์ฉันต้องได้ขนาดหน้าของไฟล์ PDF (มม.)
pdfinfo
เพียงพิมพ์ใน 'pts' เช่น:
Page size: 624 x 312 pts
ฉันควรใช้อะไร
หรือหน่วยใดเป็น 'pts' อยู่ดี - ในกรณีที่ฉันต้องการแปลงหน่วย ...
สำหรับการเขียนสคริปต์ฉันต้องได้ขนาดหน้าของไฟล์ PDF (มม.)
pdfinfo
เพียงพิมพ์ใน 'pts' เช่น:
Page size: 624 x 312 pts
ฉันควรใช้อะไร
หรือหน่วยใดเป็น 'pts' อยู่ดี - ในกรณีที่ฉันต้องการแปลงหน่วย ...
คำตอบ:
หน่วย 'pts' ที่ใช้โดยpdfinfo
แสดงถึงจุด PostScript จุด PostScriptถูกกำหนดไว้ในแง่ของนิ้วและความละเอียด 72 จุดต่อนิ้ว:
ในช่วงปลายยุค 80 ถึงยุค 90 จุดดั้งเดิมถูกแทนที่ด้วยจุดพิมพ์บนเดสก์ท็อป (หรือเรียกอีกอย่างว่าจุด PostScript) ซึ่งกำหนดไว้เป็น 72 จุดต่อนิ้ว ( 1 จุด = 1⁄72 นิ้ว = 25.4⁄72 มม. = 0.352 ¯7มม. [ ≙ 0.3528 มม. ])
คู่มือที่gv
มีรายการรูปแบบกระดาษทั่วไปที่ระบุไว้ในคะแนน PostScript
pdfinfo
บางครั้งให้รูปแบบกระดาษ (เช่นPage size: 595.28 x 841.89 pts (A4)
) - ฉันสงสัยว่ามันจะทำเช่นนั้นสำหรับรายการขนาดหน้ากระดาษที่รู้หรือไม่?
ไม่ใช่วิธีที่ง่ายที่สุด แต่ให้imagemagick
และunits
คุณสามารถใช้
$ identify -verbose some.pdf | grep "Print size"
Print size: 8.26389x11.6944
เพื่อหาขนาดหน้าเป็นนิ้ว (ซึ่งอาจให้ผลการค้นหาที่หลากหลายหาก PDF ใช้ส่วนข้อมูลที่ต่างกัน) แล้วแปลงตัวเลขดังนี้:
$ units -t '8.26389 inch' 'mm'
209.90281
หมายความว่า 8.26 นิ้วมี 209.9 มม. (ฉันใช้ A4 PDF สำหรับเรื่องนี้)
identify
เป็น PDF ใน OS XI จะไม่ได้รับผลลัพธ์ใด ๆ
identify
ต้องใช้ ImageMagick
มาในปัญหาเดียวกันและมาถึงวิธีการแก้ปัญหาต่อไปนี้ ฉันไม่ได้จัดทำเอกสารเกี่ยวกับวิธีสร้างไฟล์ pdf ฉันเพิ่งเปรียบเทียบไฟล์ PDF เปล่าสองไฟล์กับขนาดหน้าที่แตกต่างกัน
ดูเหมือนว่าไฟล์ PDF จะมีแอตทริบิวต์ต่าง ๆ ฝังอยู่ระหว่าง "<<" และ ">>" ฉันพบว่าข้อมูลขนาดหน้ามีอยู่ในข้อความธรรมดาและสามารถค้นหาได้ด้วยการค้นหา regex อย่างง่าย
สิ่งนี้อาจเป็นจริงหรือไม่จริงกับไฟล์ PDF ทั้งหมด แต่ใช้ได้กับทุกอย่างที่ฉันสามารถหาได้จากแหล่งที่แตกต่างกัน
ส่วนที่เกี่ยวข้องสามารถมีลักษณะเช่นนี้สำหรับหน้า A4 ขนาด:
/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]
มันหมายถึง [0 0 width width] ดังนั้นนี่คือ super lame ของฉัน แต่วิธีแก้ปัญหาในการทำงานเพื่อแยกสิ่งนี้:
cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1
เพียงเปลี่ยน test.pdf เป็นไฟล์ของคุณ
ฉันใช้ maxchlepzigs ตอบเพื่อคำนวณ mm โดยตรง:
$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'
วิธีนี้ใช้ได้กับคำตอบของ Alex Knaufs แต่การระบุใช้เวลานานกว่า pdfinfo และต้องใช้ imagemagick แต่ข้อเสียคือคุณสามารถใช้สิ่งนี้กับไฟล์หลาย ๆ ไฟล์ (เช่นโดย cd'ing ในไดเรกทอรีและการใช้งาน*.pdf
):
$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'
grep
คำสั่งที่สองรับค่าสองจุด / นิ้ว ฉันค่อนข้างแน่ใจว่าคุณสามารถข้าม grep regex และทำโดยตรงกับ awk แต่ฉันไม่สามารถคิดออก