เมื่อเร็ว ๆ นี้ฉันต้องการหน้า PDF เปล่าขนาดเดียว (ขนาด 8.5 "x 11") และรู้ว่าฉันไม่ทราบวิธีสร้างจากบรรทัดคำสั่ง
ออกtouch blank.pdf
ก่อให้เกิดรูปแบบไฟล์ PDF ที่ว่างเปล่าไฟล์ มีเครื่องมือบรรทัดคำสั่งที่สร้างหน้า PDF เปล่าหรือไม่?
เมื่อเร็ว ๆ นี้ฉันต้องการหน้า PDF เปล่าขนาดเดียว (ขนาด 8.5 "x 11") และรู้ว่าฉันไม่ทราบวิธีสร้างจากบรรทัดคำสั่ง
ออกtouch blank.pdf
ก่อให้เกิดรูปแบบไฟล์ PDF ที่ว่างเปล่าไฟล์ มีเครื่องมือบรรทัดคำสั่งที่สร้างหน้า PDF เปล่าหรือไม่?
คำตอบ:
convert
ยูทิลิตี้ ImageMagick ที่ใช้ในคำตอบของ Ketan ยังให้คุณสามารถเขียนได้เช่นกัน
convert xc:none -page Letter a.pdf
หรือ
convert xc:none -page A4 a.pdf
หรือ (สำหรับกระดาษ A4 แนวนอน)
convert xc:none -page 842x595 a.pdf
ฯลฯโดยไม่ต้องสร้างไฟล์ข้อความเปล่า @chbrown สังเกตว่านี่เป็นการสร้างไฟล์ pdf ที่เล็กกว่า
"xc:" หมายถึง "X Constant Image" แต่อาจคิดได้ว่าเป็น "x canvas" มันเป็นวิธีการระบุบล็อกสีเดียวในกรณีนี้ไม่มี ข้อมูลเพิ่มเติมที่http://imagemagick.org/Usage/canvas/#solidซึ่งเป็นคู่มือ "de พฤตินัย" สำหรับ ImageMagick [เสริมด้วยข้อมูลจากท่อ] (สิ่งที่ต้องการpdf:a
สามารถใช้ในการประกาศอย่างชัดแจ้งในรูปแบบของไฟล์. label:'some text'
, gradient:
, rose:
และlogo:
ดูเหมือนจะเป็นตัวอย่างอื่น ๆ ของรูปแบบไฟล์พิเศษ.)
Anko แนะนำให้โพสต์การดัดแปลงนี้เป็นคำตอบที่แยกต่างหากดังนั้นฉันกำลังทำอยู่
~/bin
เช่นเดียวกับGIF เล็กที่สุดที่เล็กที่สุดที่เป็นไปได้ว่างเปล่าหน้าไฟล์ PDF จะต้องมีการทำงานออกด้วยมือเพราะมันมีขนาดเล็กเพื่อให้บิตที่ไม่จำเป็น แต่-อันตรายของเมตาดาต้ากลายเป็นส่วนหนึ่งที่สำคัญของขนาดของไฟล์และการบีบอัดจริงทำให้สิ่งที่ใหญ่กว่า นอกจากนี้ยังต้องการการเอาใจใส่กฎในข้อกำหนด PDF อย่างละเอียดเกี่ยวกับบิตของโครงสร้างไฟล์ที่เป็นและไม่จำเป็นต้องใช้ (คุณรู้หรือไม่ว่าวัตถุหน้าจะต้องมี/Resources
พจนานุกรมแม้ว่ามันจะว่างเปล่า แต่ไม่จำเป็นต้องรวมถึง/Contents
กระแส)
หากคุณไม่ได้ใช้วัตถุ PDF 1.5 และสตรีมอ้างอิงไขว้ (ซึ่งมีข้อได้เปรียบที่ไฟล์นั้นสามารถพิมพ์ได้อย่างสมบูรณ์แบบ ASCII) ฉันเชื่อว่าวิธีที่ดีที่สุดที่คุณสามารถทำได้คือ 317 ไบต์ หากคัดลอกและวางจะทราบว่ามีความต้องการที่จะเป็นพื้นที่ต่อท้ายทั้งสี่ของรายการตารางอ้างอิงข้าม (เส้นระหว่าง0 4
และtrailer<<...
) และนั่นก็คือไม่ควรจะเป็น newline %%EOF
สุดท้ายหลังจากที่
%PDF-1.4
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
3 0 obj<</Type/Page/MediaBox[0 0 612 792]/Parent 2 0 R/Resources<<>>>>endobj
xref
0 4
0000000000 65535 f
0000000009 00000 n
0000000052 00000 n
0000000101 00000 n
trailer<</Size 4/Root 1 0 R>>
startxref
178
%%EOF
การแทนที่ตารางการอ้างอิงโยงด้วยสตรีมการอ้างอิงโยง v1.5 ที่สร้างขึ้นด้วยตนเองจะทำให้ไฟล์เล็กลงเล็กน้อยในราคาที่ไม่สามารถพิมพ์ได้ ASCII: 294 ไบต์ (เพื่อประโยชน์ในการอ่านไม่ต้องพูดถึงความสามารถในการพิมพ์กระแส xref ด้านล่างได้รับการ hexdumped แต่นี่ไม่ได้สะท้อนในพจนานุกรมกระแสของมันในการกู้คืน PDF ที่ถูกต้องคุณต้องแทนที่ hexdump ด้วย สอดคล้องไบต์ไบนารีดิบหรือเปลี่ยน/Length 15
ไป/Length 30/Filter/ASCIIHexDecode
และยอมรับแฟ้มที่อยู่ 328 ไบต์นาน.)
%PDF-1.5
1 0 obj<</Type/Catalog/Pages 2 0 R>>endobj
2 0 obj<</Type/Pages/Count 1/Kids[3 0 R]>>endobj
3 0 obj<</Type/Page/MediaBox[0 0 612 792]/Parent 2 0 R/Resources<<>>>>endobj
4 0 obj<</Type/XRef/Size 5/W[1 1 1]/Root 1 0 R/Length 15>>stream
0000ff01090001340001650001b200endstream endobj
startxref
178
%%EOF
ฉันยังทดลองใช้การห่อวัตถุ 1 ถึง 3 ในกระแสข้อมูลวัตถุ แต่สิ่งนี้จะเพิ่มค่าใช้จ่ายกลับคืนมากกว่าที่บันทึกไว้แม้ว่าจะถูกบีบอัดกระแสก็ตาม
การกำหนดทางเลือกที่เป็นไปได้ของกระแส xref คือ
4 0 obj<</Type/XRef/Size 4/W[0 1 0]/Index[1 4]/Root 1 0 R/Length 4>>stream
091365b2endstream endobj
น่าเศร้าแม้จะมีการประหยัดอย่างมากในความยาวของข้อมูลสตรีมจริง แต่การ/Index[1 4]
กินเพิ่มเติมก็เพิ่มขึ้นทั้งหมดยกเว้นการประหยัดหนึ่งไบต์ นอกจากนี้ยังไม่ชัดเจนสำหรับฉันว่าคุณได้รับอนุญาตให้ปล่อยวัตถุ 0 ออกจากไฟล์อย่างสมบูรณ์หรือไม่ (นอกจากนี้ยังไม่มีความชัดเจนกับผมว่าวัตถุ 0 ต้องมีจำนวนรุ่น -1. หากที่ไม่จำเป็นต้องคุณจริงประหยัดไบต์มากขึ้นด้วย
4 0 obj<</Type/XRef/Size 5/W[1 1 0]/Root 1 0 R/Length 10>>stream
000001090134016501b2endstream endobj
.)
หากต้องการเปลี่ยนขนาดกระดาษให้เปลี่ยน612 792
ด้วยความกว้างและความสูงที่เหมาะสมซึ่งแสดงเป็นจุด PostScript (72 คะแนน PostScript = 1 US นิ้วหรือ 25.4 มิลลิเมตร) ตัวอย่างเช่น595 842
สำหรับ A4 คุณสามารถฝังสิ่งนี้ลงในเชลล์สคริปต์ที่แยก PDF เปล่าออกมาไม่ว่าจะต้องการกระดาษขนาดไหน ส่วนที่ยุ่งยากเท่านั้นจะทำให้แน่ใจว่าstartxref
ออฟเซ็ตยังคงแม่นยำแม้ว่าขนาดของวัตถุ 3 จะเปลี่ยนไป
หากคุณมีconvert
(ยูทิลิตี้ ImageMagick) ติดตั้งอยู่คุณสามารถทำได้:
touch a.txt && convert a.txt -page Letter a.pdf
convert
นอกจากนี้ยังมี-size
ตัวเลือกที่คุณสามารถใช้เพื่อกำหนดขนาดของไฟล์ PDF เอาท์พุท
convert xc:none -page Letter a.pdf
โดยไม่ต้องสร้างไฟล์ txt ที่ว่างเปล่า
(null)
ข้อผิดพลาดแบบอักษรใด ๆ
convert.im6: improper image header
a.txt '@ error / txt.c / ReadTXTImage / 429 convert.im6: ไม่มีการกำหนดรูปภาพa.pdf' @ error/convert.c/ConvertImageCommand/3044.
echo .bp | groff -T pdf > t.pdf
มาถึงคุณโดย Groff ซอฟต์แวร์ที่มีการประเมินค่าต่ำที่สุดในโลก
groff: can't find `DESC' file
และgroff:fatal error: invalid device `pdf'
มีเวอร์ชั่น Groff 1.22.2 บน CentOS 7.2
bash 4.1.2
วิ่งgroff 1.18.1.4
.bp
ย่อมาจาก "break page" ซึ่งเป็นสาเหตุที่ทำให้เกิดเอกสาร 2 หน้า หากต้องการสร้างเอกสาร 1 หน้าเพียงทำอย่างเรียบง่ายยิ่งecho | groff -T pdf > blank.pdf
ขึ้น
echo .bp
ควรถูกแทนที่ด้วยecho
เช่นเดียวกับ @FaheemMitha พูด
คุณสามารถใช้ pdfTeX:
echo '\shipout\hbox{}\end' | pdftex
ซึ่งสร้างหน้าเดียวที่ว่างเปล่าtexput.pdf
ประมาณ 900 ไบต์ครึ่งหนึ่งของ ImageMagick ใช้
สิ่งนี้ทำให้คุณรู้สึกดีกับขนาดกระดาษที่เป็นค่าเริ่มต้นของการติดตั้ง TeX ของคุณ หากต้องการตั้งขนาดอย่างชัดเจนคุณสามารถไปที่ LaTeX แทน:
echo '\documentclass[letterpaper]{article}\usepackage[pass]{geometry}
\begin{document}\shipout\hbox{}\end{document}' | pdflatex
อีกตัวเลือกหนึ่งคือการใช้ไดรเวอร์ PDF ของ Ghostscript แม้ว่าps2pdf
สคริปต์ที่ใช้งานง่าย:
echo showpage | ps2pdf -sPAPERSIZE=letter - blank.pdf
ซึ่งเงียบกว่า TeX มาก แต่ให้ผลลัพธ์ที่มีขนาดกะทัดรัดน้อยลง (ประมาณ 2,400 ไบต์)
echo "" | ps2pdf -sPAPERSIZE=a4 - blank.pdf
ผมใช้ตัวแปร นี่เล็กกว่าเล็กน้อยที่ 2200 ไบต์
echo '\documentclass[letterpaper]{article}\usepackage[pass]{geometry} \begin{document}\shipout\hbox{}\end{document}' | pdflatex
article.pdf
สร้าง เป็นไปได้ไหมที่จะสร้างมันขึ้นมาblank.pdf
โดยตรง?
-jobname <basename>
ในบรรทัดคำสั่ง
\shipout\hbox{}
หรือshowpage
สร้างหน้าเดียว ทั้ง TeX และ Postscript มีโครงสร้างวนลูปที่คุณสามารถใช้ได้ แต่อาจจะง่ายกว่าในการใช้ภาษาสคริปต์ที่คุณเลือกเพื่อทำซ้ำคำสั่งด้วยจำนวนครั้งที่เหมาะสม
วิธีง่ายๆในการสร้าง PDF ด้วยหน้าเปล่ากำลังใช้rst2pdf
:
echo -e '.. raw:: pdf\n\n PageBreak' | rst2pdf -o blank.pdf
เพียงแค่สะท้อนในพื้นที่เดียวจะไม่ทำคุณจะจบลงด้วยไฟล์ PDF ที่ไม่มีหน้า (ซึ่งไม่เหมือนกับไฟล์เปล่า)
บนบรรทัดรับคำสั่งพิมพ์:
ps2pdf blank.pdf
คำสั่งps2pdf
จะใช้ในการแปลงไฟล์ PostScript เป็น pdf
ps2pdf file.ps file.pdf
ps2pdf blank.pdf
ส่งคืนข้อผิดพลาดเนื่องจากคาดว่าไฟล์ Postscript เป็นอาร์กิวเมนต์ และคำสั่งที่สองต้องมีอยู่file.pdf
ก่อน ฉันพลาดอะไรไปรึเปล่า?
touch blank.ps
; 2. ps2pdf blank.ps blank.pdf
; 3.pdftk A=1.pdf B=blank.pdf cat A1-end B output 2.pdf
สุดท้ายนี้คือวิธี Ghostscript ในการสร้าง PDF ที่แสดงหน้าว่าง:
gs -sDEVICE=pdfwrite -o empty.pdf -c showpage
ขนาดหน้ากระดาษน่าจะเป็นตัวอักษร หากคุณต้องการ A4 ให้ใช้สิ่งนี้:
gs -sDEVICE=pdfwrite -o empty.pdf -g5950x8420 -c showpage
พื้นหลัง:-c
พารามิเตอร์สามารถตามด้วยสตริง PostScript ถูกต้องใด ๆ ซึ่ง Ghostscript จะพยายามที่จะตีความ และหน้าว่างใน PostScript จะถูกแสดงด้วยบล็อกรหัสสั้น ๆ นี้:
%!PS
showpage