최근에 하나의 빈 PDF 페이지 (8.5 "x 11"크기)가 필요했고 명령 줄에서 만드는 방법을 모른다는 것을 깨달았습니다.
발행 touch blank.pdf
하면 빈 PDF 파일이 생성 됩니다 . 빈 PDF 페이지 를 생성하는 명령 줄 도구가 있습니까?
최근에 하나의 빈 PDF 페이지 (8.5 "x 11"크기)가 필요했고 명령 줄에서 만드는 방법을 모른다는 것을 깨달았습니다.
발행 touch blank.pdf
하면 빈 PDF 파일이 생성 됩니다 . 빈 PDF 페이지 를 생성하는 명령 줄 도구가 있습니까?
답변:
convert
Ketan의 답변에 사용 된 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는이 수정 사항을 별도의 답변으로 게시 할 것을 제안 했으므로 수행하고 있습니다.
~/bin
가장 작은 GIF 처럼 가장 작은 빈 페이지 PDF는 직접 작성해야합니다. 크기가 너무 작기 때문에 불필요한 메타 데이터 비트가 파일 크기의 중요한 부분이되고 압축하면 실제로 크기가 커지기 때문 입니다. 또한 파일 구조의 비트가 필요하거나 필요하지 않은 비트에 대한 PDF 사양의 규칙에주의를 기울여야합니다. (페이지 개체가 /Resources
비어 있어도 사전을 포함해야 하지만 스트림 을 포함 할 필요 는 없다는 것을 알고 계셨습니까 /Contents
?)
PDF 1.5 객체 및 상호 참조 스트림을 사용하지 않으면 (파일을 완전히 인쇄 가능한 ASCII로 사용할 수 있다는 이점이 있음) 317 바이트가 최선이라고 생각합니다. 복사 및 붙여 넣기하면, 상호 참조 테이블 항목의 네 가지에 후행 공백 (사이의 선이있을 필요가 있다는 사실을 양지 0 4
과 trailer<<...
), 거기되어 있지 애프터 마지막 개행 있어야 %%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/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까지 객체를 객체 스트림에 래핑하는 방법을 실험했지만 스트림이 압축되어 있어도 저장하는 것보다 더 많은 오버 헤드가 추가됩니다.
외부 참조 스트림의 가능한 대안적인 제형은
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 792
PostScript 포인트 (72 PostScript 포인트 = 1 US 인치 또는 25.4 밀리미터)로 표시된 적절한 너비와 높이로 교체하십시오 . 예를 들어 595 842
A4의 경우입니다. 원하는 용지 크기의 빈 PDF를 뱉어내는 쉘 스크립트에 이것을 포함시킬 수 있습니다. 유일한 까다로운 부분은 startxref
객체 3의 크기가 변경 되어도 오프셋이 정확하게 유지 되도록하는 것 입니다.
당신이있는 경우 convert
(AN 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이 '@ 오류 / 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'
에 CentOS 7.2에 groff의 버전 1.22.2와.
bash 4.1.2
runninggroff 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
ImageMagick이 사용하는 것의 절반 인 약 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 바이트)을 생성합니다.
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에는 모두 사용할 수있는 반복 구조가 있지만 원하는 스크립팅 언어를 사용하여 명령을 적절한 횟수만큼 복제하는 것이 더 간단 합니다.
명령 행에 다음을 입력하십시오.
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
마지막으로 빈 페이지를 보여주는 PDF를 만드는 Ghostscript 방법은 다음과 같습니다.
gs -sDEVICE=pdfwrite -o empty.pdf -c showpage
페이지 크기는 Letter 일 가능성이 높습니다. A4를 원한다면 다음을 사용하십시오.
gs -sDEVICE=pdfwrite -o empty.pdf -g5950x8420 -c showpage
배경 : 이 -c
매개 변수 뒤에는 유효한 PostScript 문자열이 올 수 있으며 Ghostscript는 해석하려고합니다. 그리고 PostScript의 빈 페이지는 다음 짧은 코드 블록으로 표시됩니다.
%!PS
showpage