2013-10-10 11 views
0

파이썬을 사용하여 확인할 수있는 체크 박스가있는 PDF를 작성하려고합니다. 나는 pdf를 생성하기 위해 피사를 사용하려고 노력해 왔으며 인터넷을 둘러 보았고 다른 예제를 시도했지만 편집 가능한 PDF를 만드는 방법을 찾을 수 없었다.편집 가능한 PDF를 파이썬으로 작성하려고 시도했습니다.

이 나의 가장 최근의 시도 :

import cStringIO 
import ho.pisa as pisa 
import os 

# shortcut for dumping all logs on screen 
pisa.showLogging() 

def HTML2PDF(data, filename, open=False): 
    """ 
     Simple test showing how to create a PDF file from 
     PML Source String. Also shows errors and tries to start 
     the resulting PDF 
    """ 
    pdf = pisa.CreatePDF(cStringIO.StringIO(data), file(filename, "wb")) 

    if open and not(pdf.err): 
     os.startfile(str(filename)) 

    return not pdf.err 

if __name__=="__main__": 
    HTMLTEST = """ 
     <html> 
      <body> 
       <form name="deleteForm" method="get" action=""> 
        User 1 <input type="checkbox" name="user" value="delete" /> 
       </form> 
      </body> 
     </html> 
    """ 

    HTML2PDF(HTMLTEST, "test.pdf", open=True) 

형태 나에게 오류를 제공합니다

 
Traceback (most recent call last): 
    File "C:/Users/horeth/PycharmProjects/Reportlab/HTMLtoPF/Main.py", line 32, in 
     HTML2PDF(HTMLTEST, "test.pdf", open=True) 
    File "C:/Users/horeth/PycharmProjects/Reportlab/HTMLtoPF/Main.py", line 14, in HTML2PDF 
     pdf = pisa.CreatePDF(cStringIO.StringIO(data), file(filename, "wb")) 
IOError: [Errno 13] Permission denied: 'test.pdf' 

사용자가 삭제 여부를해야 할 경우 독자가 결정하는 체크 박스가 있습니다.

파이썬으로 편집 가능한 PDF 문서를 만드는 방법이 있는지 궁금합니다. 이것은 지금까지 내가 시도한 시도 중 하나 일뿐입니다.

+0

를 만들 하나의 체크 박스 – user

+0

당신이 쓸 수있는 권한이없는 위치에 pdf를 만들려고합니다. ... 당신의 오류 메시지에서 내 짐작이야 –

+0

그것에 쓸 수있는 권한이 있습니다. 하지만 내가 알아 내려고하는 것은 파이썬에서 편집 가능한 PDF를 만드는 방법이 있는지입니다. – user

답변

1

가능한 이유. 디렉토리에 대한 쓰기 권한이 없습니다. 파일은 이미 있지만 쓰기 권한이 없습니다.

+0

쓰기 권한이 있지만 위 코드를 약간 다른 HTML로 시도했지만 내 목표는 Python으로 편집 가능한 PDF를 만드는 방법을 찾는 것입니다. 나는이 방법이 효과가있을 것이라고 생각했고, 나는 여러 가지 다른 것들을 시도해 왔으며 그들 중 누구도 일하지 않고있다. 난 reportlab도 시도한 – user

+0

당신이 쓸 수있는 권한이 없어 ... 그게 당신이 생각하는 것보다 다른 디렉토리에서 열려고했는지 또는 PDF 파일이있는 동안 파일에 변경을 허용하지 않는 응용 프로그램에서 열려 있기 때문에 열다. 이 내용은 당신이 작성한 내용과 아무런 관련이 없습니다. –

+0

방금 ​​코드를 복사하여 붙여 넣었으며 pdf fine을 만들었습니다 ... 그게 체크 상자를 추가하지 않았습니다. –

0
import cStringIO as StringIO 
from xhtml2pdf import pisa 
from django.template.loader import get_template 
from django.template import Context 
from cgi import escape 

def render_to_pdf(template_path, context_dict): 
    template = get_template(template_path) 
    html = template.render(context_dict) 
    result = StringIO.StringIO() 
    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859- 
1")), dest=result) 
    if not pdf.err: 
     return HttpResponse(result.getvalue(), 
content_type='application/pdf') 
    return HttpResponse('We had some errors<pre>%s</pre>' % 
escape(html)) 

호출이 기능

def myview(request): 
    return render_to_pdf('HTMLTEST.html', { 'pagesize':'A4',}) 

내가 방금 한 사용자와 PDF를 만들고 싶어, 별도의 HTML 파일

HTMLTEST.html 지금 들어

<html> 
     <body> 
      <form name="deleteForm" method="get" action=""> 
       User 1 <input type="checkbox" name="user" value="delete" /> 
      </form> 
     </body> 
    </html>