나는 다음 reStructuredText를 사용하여 PDF로 변환 rst2pdf
했습니다 .pandoc
This is a python example::
def main():
print("Hello World!")
if __name__ == '__main__':
main()
And one for YAML::
server:
name: ts0
location: paris
두 프로그램은 서로 다른 엔진을 사용하여 PDF를 생성하지만( pandoc
이를 위해서는 TeX를 설치해야 함) 결과적으로 코드 예제를 올바르게 잘라내고 붙여넣을 수 없는 PDF 파일이 됩니다.
강조 표시된 코드(녹색 배경)는 이러한 PDF 파일에서 오프셋을 사용하여 생성되었기 때문에 공백이 누락되었습니다.
많은 언어의 경우 복사하여 붙여넣으면 보기 흉한 형식의 코드가 생성되지만 Occam 및 Python과 같은 프로그래밍 언어와 YAML의 구성 파일의 경우 이는 실제로 의미를 변경합니다. 운이 좋다면 실제로 뭔가가 깨져서 알아차리겠지만, 예를 들어 YAML 예제도 정확합니다. 선행 공백이 없으면 의미가 다를 뿐입니다.
코드 샘플의 이러한 공백 손상은 readthedocs 사이트에서 생성된 PDF 문서에서도 발생합니다.
다음에서 출력을 얻는 경우:
pandoc example.rst -o example.epub
결과로 나온 한 페이지 문서를 보면 코드를 올바르게 복사하여 붙여넣을 수 있습니다. 사용자 인터페이스를 통해 구경(버전 2.55.0)을 사용하여 변환하는 경우 example.epub
다음을 수행할 수 있는 PDF 파일을 받게 됩니다.할 수 있는코드는 올바르게 복사되었지만(공백 포함) 결과 PDF는 3페이지로 구성됩니다.
명령줄에서 변환해 보세요.
ebook-convert example.epub example.pdf
렌더링 예외가 발생하고 --old-pdf-engine
변환 옵션을 추가하면 작동하지만 여전히 단일 페이지가 아닌 3페이지 PDF가 있습니다.
HTML을 통해 변환:
rst2html example.rst > example.html; ebook-convert example.html example.pdf
pandoc example.rst -o example.html; ebook-convert example.html example.pdf
올바른 선택 코드를 제공합니다.
, 그런데 붙여넣으면 들여쓰기할 공간이 없고, Hello
와 사이의 공백 도 World
사라진다. 그 외에도 큰 파일의 경우 필요하지 않은 곳에 페이지 나누기가 생기고 스타일시트를 통해 레이아웃을 많이 조정해야 합니다.
변환을 통과하려고 시도했지만 .odt
결과적으로 PDF 파일의 텍스트를 완전히 선택할 수 없게 되었습니다.
PDF 출력에 대한 다음 요구 사항을 고려하십시오.
- 공백이 있어도 코드 조각을 올바르게 선택할 수 있습니다.
- 결과는 레이아웃과 유사
rst2pdf
하거나readthedocs
.rst
파일이나 다른 마크업 형식에서 시작하여 PDF 파일을 생성할 수 있는 명령줄 도구가 있습니까?
답변1
다음 파이프라인을 사용할 수 있습니다.
txttopdf.sh:
enscript -B -p- | ps2pdf -dCompressPages=false - -
소스 파일의 선행 공백을 유지하는 PDF를 생성합니다. 특수 ps2pdf
옵션을 사용하면 중간 PostScript 내용 부분을 그대로 사용하여 PDF에 들여쓰기된 텍스트 개체를 남겨둘 수 있습니다. 일반 텍스트 편집기로 열어서 콘텐츠 섹션이 거의 끝나가는 것을 확인할 수 있습니다.
그러나 이러한 선행 공백을 삭제하는 것은 여전히 PDF 뷰어에 따라 다릅니다. 예를 들어 evince
이전과 마찬가지로 acroread
뷰어에서 선행 공백을 선택할 수 없습니다. 공백을 잘림 방지 공백(ISO-8859-1)으로 바꾸는 경우에도 마찬가지입니다.
따라서 파이프라인은 PDF 파일에 대해 원하는 만큼의 작업을 수행할 수 있으며 간격을 지원하는 뷰어를 찾아야 합니다.