IPython / Jupyter 노트북을 PDF로 저장할 때 발생하는 문제


88

그래서, 나는 jupyter 노트북을 PDF로 저장하려고 노력했지만 이것을 수행하는 방법을 알 수 없습니다. 내가 가장 먼저 시도하는 것은 파일 메뉴에서 PDF로 다운로드하는 것입니다.

nbconvert failed: PDF creating failed

다음으로 시도하는 것은 명령 프롬프트에서 이와 같이 변환을 시도하는 것입니다.

$ ipython nbconvert --to latex --post PDF MyNotebook.ipynb 

그러나 다시 이것은 오류 메시지가 발생합니다.

ImportError: No module named 'PDF'

그리고 내가 시도한다면

$ ipython nbconvert --to latex MyNotebook.ipynb 

이 결과

IPython.nbconvert.utils.pandoc.PandocMissing: Pandoc wasn't found:
Please check that pandoc is installed

pandoc ( pip install pandoc) 을 설치하려고하면

ImportError: No module named 'ConfigParser'

그리고 이것은 내가 다른 무엇을 해야할지 모르기 때문에 내가 막히는 곳입니다. 누구나 잘못된 것을 고치는 방법을 알고 있습니까?


2
pdf를 생성하려면 비 pythonic 종속성 (예 : pandoclatex)이 필요합니다.
cel

4
즉,이 기능을 사용하려면 먼저 설치해야합니다. 그리고 그들은 파이썬 패키지가 아니므로 pip를 사용할 수 없습니다.
cel

1
pandoc 은 Haskell로 작성되었습니다.
Thomas K

답변:


34

이를 작동시키기 위해 라텍스, 일반 라텍스 추가 및 pandoc을 설치했습니다.

우분투 사용 :

sudo apt-get install texlive texlive-latex-extra pandoc

몇 번의 시간이 걸립니다 : 다운로드하는 데 몇 100 Mb. 나는 --no-install-recommendstexlive에 사용할 수 있고 dl로 줄이기 위해 추가로 사용할 수있는 곳을 읽었습니다 .


9
내 필요 pandoctexlive-xetex.
douggard

ask_ubuntu 에서 더 작은 패키지 목록을 찾았 습니다 .
Eric Duminil

2
나는 또한 필요 texlive-generic-extra해결하기 위해 이 문제를 떨어져에서 texlive-xetex그 @douggard 제안했다.
pgmank

덕분에 큰 도움이 :)이었다 많은
farnaz 자자 예리을

30

Mac을 사용 중이고 Homebrew가 설치되어있는 경우 터미널 셸을 열고 다음 명령을 입력하여 pandoc을 설치합니다 .

brew install pandoc

인내심을 가지십시오. 느린 인터넷 연결이나 오래된 시스템에서는 설치 및 컴파일에 시간이 걸릴 수 있습니다.


3
이것은 OS X 10.10에서 작동했습니다. 이제 LaTeX 및 PDF로 변환 할 수 있습니다. (pandoc에 설치하는 데 1 분도 걸리지 않았습니다. 시스템에 대부분의 구성 요소가 이미 설치되어 있어야합니다.) 감사합니다!
drpetermolnar

1
@drpetermolnar 이것은 나에게도 효과적이었습니다 (OSX 10.11.6). 2 분 걸렸습니다.
timothyjgraham

1
@Akshay, 명령은 다음과 같습니다 ipython nbconvert --to PDF <노트북> .ipynb
안드레아

@AndreaNalon 위에서 언급 한 명령이 작동하지 않습니다. stackoverflow.com/questions/43247818/…
Akshay Khale

OSX를 들어 10.13.06 내가해야 할 일을했을 : brew install pandocbrew cask install mactex-no-gui.
bue


10

노트북을 PDF로 변환하려면 먼저 nbconvert를 설치해야합니다.

pip install nbconvert
# OR
conda install nbconvert

다음으로 Anaconda를 사용하지 않거나 아직 사용하지 않았다면 웹 사이트 의 지침에 따라 또는 Linux에서 다음과 같이 pandoc을 설치해야 합니다.

sudo apt-get install pandoc

그런 다음 컴퓨터에 XeTex를 설치해야합니다.

이제 IPython 노트북이있는 폴더로 이동하여 다음 명령을 실행할 수 있습니다.

jupyter nbconvert --to pdf MyNotebook.ipynb

자세한 내용은 이 링크 를 확인 하십시오 .


4

질문에 대한 의견에 따르면 pandoc과 라텍스 (예 : TeXShop)가 필요합니다. Homebrew와 함께 pandoc을 설치했는데 1 초 밖에 걸리지 않았습니다. pandoc과 TeXShop을 사용하면 라텍스를 생성 할 수 있지만 pdf는 생성 할 수 없습니다 (명령 줄에서).

ipython nbconvert --to latex mynotebook.ipynb

TeXShop으로 라텍스 (.tex) 파일을 탐색 할 때 실패는 스타일 시트와 정의가 누락되어 발생했습니다. 이들 (adjustbox.sty, adjcalc.sty, trimclip.sty, collectbox.sty, tc-pgf.def, ucs.sty, uni-global.def, utf8x.def, ucsencs.def)을 모두 설치 한 후, 마침내 완료되었습니다. 작업.

그러나 결과는 내 취향에 비해 너무 펑키 해 보입니다. Safari에서 html을 인쇄하면 구문 색상이 손실되는 것은 너무 나쁩니다. 그렇지 않으면 그렇게 나쁘게 보이지 않습니다. (이것은 모두 OS X에 있습니다).


1
다음 짧은 줄은 컴파일을 통해 생성 된 중간 파일을 남기지 않고 PDF 파일을 직접 생성했습니다. jupyter nbconvert --to pdf filename.ipynb
llinfeng

적어도 그들은 HTML을 PDF로 직접 인쇄하는 것이 덜 나쁘도록 컬러 인쇄를 수정했습니다. github.com/jupyter/notebook/issues/840
flutefreak7

3

이 Python 스크립트에는 pdf로 변환하려는 Ipython Notebook을 탐색기로 선택할 수있는 GUI가 있습니다. wkhtmltopdf를 사용한 접근 방식은 내가 찾은 유일한 접근 방식이며 잘 작동하고 고품질 pdf를 제공합니다. 여기에 설명 된 다른 접근 방식은 문제가 있으며 구문 강조가 작동하지 않거나 그래프가 엉망입니다.

wkhtmltopdf를 설치해야합니다. http://wkhtmltopdf.org/downloads.html

및 Nbconvert

pip install nbconvert
# OR
conda install nbconvert

Python 스크립트

# Script adapted from CloudCray
# Original Source: https://gist.github.com/CloudCray/994dd361dece0463f64a
# 2016--06-29
# This will create both an HTML and a PDF file

import subprocess
import os
from Tkinter import Tk
from tkFileDialog import askopenfilename

WKHTMLTOPDF_PATH = "C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf"  # or wherever you keep it

def export_to_html(filename):
    cmd = 'ipython nbconvert --to html "{0}"'
    subprocess.call(cmd.format(filename), shell=True)
    return filename.replace(".ipynb", ".html")


def convert_to_pdf(filename):
    cmd = '"{0}" "{1}" "{2}"'.format(WKHTMLTOPDF_PATH, filename, filename.replace(".html", ".pdf"))
    subprocess.call(cmd, shell=True)
    return filename.replace(".html", ".pdf")


def export_to_pdf(filename):
    fn = export_to_html(filename)
    return convert_to_pdf(fn)

def main():
    print("Export IPython notebook to PDF")
    print("    Please select a notebook:")

    Tk().withdraw() # Starts in folder from which it is started, keep the root window from appearing 
    x = askopenfilename() # show an "Open" dialog box and return the path to the selected file
    x = str(x.split("/")[-1])

    print(x)

    if not x:
        print("No notebook selected.")
        return 0
    else:
        fn = export_to_pdf(x)
        print("File exported as:\n\t{0}".format(fn))
        return 1

main()

스크립트는 실제로 stackoverflow 응답이 길고 wkhtml을 래핑합니다. wkhtml에 대한 명령 줄 옵션과 예제를 넣으면 대답이 더 명확해질 것이라고 생각합니다.
휴 퍼킨스

그래서 기본적으로 nbconverthtml로 내보내고을 사용 wkhtmltopdf하여 pdf로 변환합니다. 그러나 이것은 :-) 답변에서 명확하지 않다
휴 퍼킨스

그래서 저는 이것을 시도했습니다. pdf로 직접 내보내는 것보다 효과적입니다. 이상하게도 내 mathjax 중 일부가 문서 시작 부분에 올바르게 렌더링 된 다음 명백한 이유없이 문서에 약 12 ​​페이지의 렌더링이 중지됩니다.
휴 퍼킨스

3

OS에서 Anaconda-Jupyter Notebook을 사용하고 있습니다 : Python 프로그래밍을 위해 Ubuntu 16.0.

Nbconvert, Pandoc 및 Tex를 설치합니다.

터미널을 열고 다음 명령을 구현하십시오.

Nbconvert 설치 : Jupyter 생태계의 일부이지만 여전히 다시 설치합니다.

$conda install nbconvert

또는

$pip install nbconvert

하지만 아나콘다를 사용하는 경우 pip 대신 conda를 사용하는 것이 좋습니다.

Pandoc 설치 : Nbconvert는 마크 다운을 HTML 이외의 형식으로 변환하기 위해 Pandoc을 사용하기 때문입니다. 다음 명령을 입력하십시오.

$sudo apt-get install pandoc

TeX 설치 : PDF로 변환하기 위해 nbconvert는 TeX를 사용합니다. 다음 명령을 입력하십시오.

$sudo apt-get install texlive-xetex

이 명령을 실행 한 후 열린 노트북을 닫고 홈 페이지를 새로 고치거나 열린 노트북의 커널을 다시 시작하십시오. 이제 노트북을 pdf로 다운로드하십시오 :)

참고 : 자세한 내용은 공식 문서를 참조하십시오 :
https://nbconvert.readthedocs.io/en/latest/install.html


2

Jupyter 노트북을 PDF로 변환하려면 아래 지침을 따르십시오.

( Jupyter 노트북 안에 있어야합니다. ) :

맥 OS :

command + P-> 인쇄 대화 상자가 나타납니다-> 대상을 PDF로 변경-> 인쇄를 클릭하십시오

윈도우 :

Ctrl + P-> 인쇄 대화 상자가 나타납니다-> 대상을 PDF로 변경-> 인쇄를 클릭하십시오

위의 단계가 Jupyter 노트북의 전체 PDF를 생성하지 않는 경우 (아마 Chrome이 경우에 따라 Jupyter가 큰 출력을 스크롤하기 때문에 모든 출력을 인쇄하지 않기 때문에),

메뉴에서 자동 스크롤을 제거하려면 아래 단계를 수행하십시오. .

크레딧 : @ ÂngeloPolotto

  1. Jupyter 노트북에서 jupyter 노트북 상단의 을 클릭 합니다. 여기에 이미지 설명 입력

  2. 다음으로 모든 출력을 클릭하십시오 -> 자동 스크롤을 제거하기 위해 스크롤전환 하십시오 .

여기에 이미지 설명 입력


동의하지만 Jupyter가 큰 출력을 위해 스크롤을 만들기 때문에 Chrome이 모든 출력을 인쇄하지 않는 경우가 있습니다. 메뉴에서 자동 스크롤을 제거해야합니다. Cell-> All Outputs-> Toggle Scrolling (참조 : stackoverflow.com/a/52803744/6846888 )
Ângelo Polotto

이 정보를 답변에 추가 할 수 있습니까? 이것은 더 많은 사용자에게 매우 유용 할 수 있습니다.
Ângelo Polotto 19

1
예 @ ÂngeloPolotto, 내 답변에 귀하의 정보를 추가했습니다.
MobileDev

1

이 문제는 Ubuntu와 Mac OSX 모두에서 발생했습니다. 광란의 수색과 시련 끝에 두 가지 모두 해결되었습니다. 여기에는 texpandoc; 두 점보 외부 프로그램은 모두 Python의 pip.

Mac OSX : Pandoc의 MacPorts 설치 사용

port install pandoc

완료하는 데 거의 한 시간이 걸립니다 ( 일반적인 경우). 문제가 지속되면 MacTeX distro를 설치해야 할 수 있습니다. TeXLive의.

우분투의 경우 :에서 바닐라 TeXLive를 설치 네트워크 설치 - 하지 apt-get을 통해 . 그런 다음 apt-get을 사용하여 pandoc을 설치하십시오.

sudo apt-get install pandoc

TeXLive를 완전히 설치하려면 디스크에 최대 4.4GB가 필요합니다.

이 모든 문제를 해결하기 위해 IPython / Jupyter Notebook을 사용하는 권장 방법은 Anaconda Python 배포판을 설치하는 것입니다.


1

나는 이것을 알아내는 데 모든 종류의 문제가 있었다. 필요한 것을 정확히 제공할지 모르겠지만, 내 노트북을 HTML 파일로 다운로드 한 다음 Chrome 브라우저에서 가져 와서 PDF 파일로 인쇄하여 저장했습니다. 내 모든 코드, 텍스트 및 그래프를 캡처했습니다. 내가 필요한만큼 충분했습니다.


1
제 경우에는 html이 너무 길어도 페이지 당 하나의 셀을 넣습니다. 그래서 해결책이 아닙니다
Juh_

1

sagemath 클라우드 버전을 사용 하는 경우 왼쪽 모서리로 이동하여
파일-> 다른 이름으로 다운로드-> LaTeX를 통한 PDF (.pdf)
를 선택하여 원하는 경우 스크린 샷을 확인하십시오.

ipynb를 pdf로 변환하는 스크린 샷

어떤 이유로 든 작동하지 않으면 다른 방법을 시도 할 수 있습니다.
파일-> 인쇄 미리보기를 선택한 다음 미리보기에서
마우스 오른쪽 버튼으로 클릭-> 인쇄 한 다음 pdf로 저장을 선택합니다.


그래도 작동하지 않으면 명령 줄에서 직접 nbconvert를 사용하여 라텍스 문제를 일으키는 원인을 정확히 확인할 수 있습니다.
William Stein

1

새로운 회원으로서 저는 단순히 게시물에 댓글을 추가 할 수 없었지만 Phillip Schwartz가 제공 한 솔루션이 저에게 효과적이라는 것을 두 번째로하고 싶습니다. 비슷한 상황에 처한 사람들이 강조하면서 더 빨리 그 길을 시도하기를 바랍니다. 페이지 나누기가없는 것은 꽤 오랫동안 실망스러운 문제 였기 때문에 위의 토론에 감사드립니다.

Phillip Schwartz가 말했듯이 : "wkhtmltopdf를 설치해야합니다 : [ http://wkhtmltopdf.org/downloads.html][1]

및 Nbconvert "

그런 다음 "rawNBConvert"유형의 셀을 추가하고 다음을 포함합니다.

<p style="page-break-after:always;"></p>

그것은 나를 위해 속임수를 쓰는 것처럼 보였고 생성 된 PDF에는 해당 위치에서 페이지 나누기가있었습니다. 노트북을 HTML로 다운로드하고 브라우저에서 열고 PDF로 인쇄하는 "일반적인"경로 인 것처럼 보이므로 사용자 정의 코드를 실행할 필요가 없습니다. 이러한 유틸리티가 설치되면 작동합니다.


1

.ipynb를 pdf로 변환하려면 시스템에 2 개의 구성 요소가 있어야합니다.

  1. nbconvert : jupyter의 일부로 ipynb를 pdf로 변환 할 수 있습니다.

    pip install nbconvert
    OR 
    conda install nbconvert
    
  2. XeTeX : ipynb를 .tex 형식으로 변환 한 다음 pdf로 변환합니다.

    sudo apt-get install texlive-xetex
    

그런 다음 아래 명령을 사용하여 pdf로 변환 할 수 있습니다.

ipython nbconvert --to pdf YOURNOTEBOOK.ipynb

작동하지 않는 경우 pandoc을 설치하고 다시 시도하십시오.

sudo apt-get install pandoc

1

notebook-as-pdfInstall python -m pip install notebook-as-pdf pyppeteer-install

nbconvert와 함께 사용할 수도 있습니다.

jupyter-nbconvert --to PDFviaHTML filename.ipynb

그러면 filename.pdf라는 파일이 생성됩니다.

또는 pip install notebook-as-pdf

노트북 jupyter-nbconvert-toPDFviaHTML에서 PDF 생성


0

내가 찾은 것은 nbconvert / utils / pandoc.py에 내 컴퓨터에 오류를 일으키는 코드 버그가 있다는 것입니다. 코드는 pandoc이 환경 변수 경로에 있는지 확인합니다. 내 컴퓨터의 경우 대답은 '아니요'입니다. 그러나 pandoc.exe는 있습니다!

해결책은 69 행의 코드에 '.exe'를 추가하는 것이 었습니다.

if __version is None:
    if not which('pandoc.exe'):
        raise PandocMissing()

'xelatex'가 설치되지 않은 경우에도 마찬가지입니다. 94 행에 nbconvert / exporters / pdf.py 파일에 추가합니다.

    cmd = which(command_list[0]+'.exe')

0

Ubuntu 사용자의 경우 여기 에서 답변을 찾을 수 있습니다 . 나는 또한 그것을 인용한다 :

가장 가능한 원인은 적절한 종속성을 설치하지 않았기 때문입니다. 노트북을 PDF로 저장하려면 Ubuntu 시스템에 LaTeX 및 XeTeX 파일 변환과 관련된 일부 패키지가 설치되어 있어야합니다. 다음과 같이 설치할 수 있습니다.

sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended pandoc

또한 nbconvert일반적으로 jupyter와 함께 자동으로 설치되는 또 다른 종속성입니다. 그러나 가상 환경을 활성화하는 동안 확실하게 설치할 수 있습니다.

pip install -U nbconvert

0

pdf 로 정기적으로 다운로드 할 때 일부 기호를 올바르게 표시하는 데 문제가 있습니다 . 그래서 tex로 다운로드 jupyter nbconvert --to latex "my notebook.ipynb"하고 메모장으로 약간의 조정을했습니다 (예를 들어, 제 경우에는 제 언어에이 줄이 필요했습니다

\usepackage{tgpagella}
\usepackage[lithuanian,english]{babel}

)을 사용하여 pdf로 내보냈습니다 latex --output-format=pdf "my notebook.tex".

당신은 내가 내 크롬 브라우저의 인쇄를 사용하여 결국 브라우저에서 볼 그러나 마지막으로, 그러나, 같은 문자를 유지하려면 : Ctrl+P Print to pdf. 불필요한 머리글과 바닥 글을 추가하지만 나머지는 그대로 유지합니다. 더 이상 tqdm 진행률 표시 줄을 처리하는 동안 오류가 발생하지 않으며 페이지에서 코드가 더 이상 나오지 않습니다. 그렇게 간단합니다.


0

모든 시스템에서 ipython 노트북을 pdf / latex로 변환하기 위해 nbconvert를 올바르게 설정하는 기본 단계는 다음과 같습니다.

  1. nbconvert 설치
  2. pandoc 설치
  3. Texlive 설치

nbconvert 설치

pip install nbconvert

또는 conda install nbconvert

pandoc 설치

sudo apt-get install pandoc Ubuntu 용

또는 sudo yum install pandoc CentOS의 경우

다른 사람들을 위해 pandoc-installation을

texlive 설치

권장 패키지를 설치하거나 전체 설치를 할 수 있습니다. Ubuntu의 경우

sudo apt-get install texlive texlive-xetex texlive-generic-extra texlive-generic-recommended

`

다른 사용자 및 texlive를 전체 설치하려면 tug에 제공된 지침을 따르십시오. 시스템 및 선택에 따라 .

tug-texlive-download 에서 tar.gz 파일을 다운로드 하고 TeX Live-Quick install에 제공된 지침을 따랐습니다 . 요약 설치 지침 :

  1. 정리

    rm -rf /usr/local/texlive/2019

    rm -rf ~/.texlive2019

  2. 설치 프로그램 실행

    zip 파일의 압축을 풉니 다

    cd /your/unpacked/directory

    perl install-tl

    명령 입력 : i

  3. 경로 설정

    sudo vi /etc/bash.bashrc 삽입

    PATH=/usr/local/texlive/2019/bin/x86_64-linux:$PATH; export PATH

    MANPATH=/usr/local/texlive/2019/texmf-dist/doc/man:$MANPATH; export MANPATH

    INFOPATH=/usr/local/texlive/2019/texmf-dist/doc/info:$INFOPATH; export INFOPATH

  4. 기본 용지 크기 설정

    tlmgr paper letter

명령은 시스템에 따라 다를 수 있지만 기본 단계는 동일하게 유지됩니다.


0

Windows 10에서이 오류가 발생했습니다. 다음 세 단계를 수행하여 문제를 해결했습니다.

  1. nbconvert 설치

    pip 설치 nbconvert

  2. pandoc 설치

https://pandoc.org/installing.html

  1. miktex 설치

https://miktex.org/download


또한 라이브러리를 업데이트하는 것이 좋습니다.

pip install jupyter --upgrade
pip install --upgrade --user nbconvert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.