명령 행에서 빈 PDF를 작성하는 방법 줄에서 만드는 방법을 모른다는 것을 깨달았습니다. 발행

최근에 하나의 빈 PDF 페이지 (8.5 “x 11″크기)가 필요했고 명령 줄에서 만드는 방법을 모른다는 것을 깨달았습니다.

발행 touch blank.pdf하면 빈 PDF 파일이 생성 됩니다 . 빈 PDF 페이지 를 생성하는 명령 줄 도구가 있습니까?



답변

convertKetan의 답변에 사용 된 ImageMagick 유틸리티는 다음과 같이 쓸 수 있습니다.

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에 있으며 ImageMagick의 “사실상”매뉴얼입니다. [파이프 정보로 보충 (같은 것들 pdf:a명시 적으로 파일의 형식을 선언하는 데 사용 될 수있다. label:'some text', gradient:, rose:logo: 특별 파일 포맷의 다른 예 것 같습니다.)

Anko는이 수정 사항을 별도의 답변으로 게시 할 것을 제안 했으므로 수행하고 있습니다.


답변

가장 작은 GIF 처럼 가장 작은 빈 페이지 PDF는 직접 작성해야합니다. 크기가 너무 작기 때문에 불필요한 메타 데이터 비트가 파일 크기의 중요한 부분이되고 압축하면 실제로 크기가 커지기 때문 입니다. 또한 파일 구조의 비트가 필요하거나 필요하지 않은 비트에 대한 PDF 사양의 규칙에주의를 기울여야합니다. (페이지 개체가 /Resources비어 있어도 사전을 포함해야 하지만 스트림 을 포함 할 필요 는 없다는 것을 알고 계셨습니까 /Contents?)

PDF 1.5 객체 및 상호 참조 스트림을 사용하지 않으면 (파일을 완전히 인쇄 가능한 ASCII로 사용할 수 있다는 이점이 있음) 317 바이트가 최선이라고 생각합니다. 복사 및 붙여 넣기하면, 상호 참조 테이블 항목의 네 가지에 후행 공백 (사이의 선이있을 필요가 있다는 사실을 양지 0 4trailer<<...), 거기되어 있지 애프터 마지막 개행 있어야 %%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 바이트) 가격으로 파일이 약간 작아집니다. (가독성을 위해 전혀 입력 할 수는 없지만 아래의 외부 참조 스트림은 16 진 덤프되었지만 스트림 사전 에는 반영 되지 않습니다 . 유효한 PDF를 복구하려면 16 진 덤프를 원시 이진 바이트에 해당하거나, 변경 /Length 15/Length 30/Filter/ASCIIHexDecode328 바이트 길이의 파일을 수락.)

%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까지 객체를 객체 스트림에 래핑하는 방법을 실험했지만 스트림이 압축되어 있어도 저장하는 것보다 더 많은 오버 헤드가 추가됩니다.

외부 참조 스트림의 가능한 대안적인 제형은

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]는 1 바이트의 절약을 모두 소모합니다. 또한 객체 0을 파일에서 완전히 제거 할 수 있는지 여부는 확실하지 않습니다. (그것은 개체 0 세대 번호가 있어야하는지 여부 -1 나에게도 불분명하다. 경우 그이있어 필요하지, 당신이 실제로 더 많은 바이트를 저장

4 0 obj<</Type/XRef/Size 5/W[1 1 0]/Root 1 0 R/Length 10>>stream
000001090134016501b2endstream endobj

.)

용지 크기를 변경하려면 612 792PostScript 포인트 (72 PostScript 포인트 = 1 US 인치 또는 25.4 밀리미터)로 표시된 적절한 너비와 높이로 교체하십시오 . 예를 들어 595 842A4의 경우입니다. 원하는 용지 크기의 빈 PDF를 뱉어내는 쉘 스크립트에 이것을 포함시킬 수 있습니다. 유일한 까다로운 부분은 startxref객체 3의 크기가 변경 되어도 오프셋이 정확하게 유지 되도록하는 것 입니다.


답변

당신이있는 경우 convert(AN ImageMagick이 유틸리티)를 설치, 당신이 할 수 있습니다 :

touch a.txt && convert a.txt -page Letter a.pdf


답변

echo .bp | groff -T pdf > t.pdf

세계에서 가장 저평가 된 소프트웨어 인 groff가 제공합니다.


답변

pdfTeX를 사용할 수 있습니다 :

echo '\shipout\hbox{}\end' | pdftex

texput.pdfImageMagick이 사용하는 것의 절반 인 약 900 바이트의 빈 단일 페이지를 생성 합니다.

그래도 TeX 설치시 용지 크기 기본값을 사용하게됩니다. 크기를 명시 적으로 설정하려면 대신 LaTeX로 이동하십시오.

echo '\documentclass[letterpaper]{article}\usepackage[pass]{geometry}
      \begin{document}\shipout\hbox{}\end{document}' | pdflatex

또 다른 옵션은 편리한 ps2pdf스크립트 이지만 Ghostscript의 PDF 드라이버를 사용하는 것입니다 .

echo showpage | ps2pdf -sPAPERSIZE=letter - blank.pdf

이는 TeX보다 훨씬 조용하지만 적은 출력 (약 2300 바이트)을 생성합니다.


답변

빈 페이지로 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