Skip to content Skip to sidebar Skip to footer

Create Pdf Of A Https Webpage Which Requires Login Using Pdfkit

I am trying to generate a PDF of a webpage from a https website (Salesforce). I have so far tried using simple_salesforce, which returns a sessionID (cookie) to no avail. from simp

Solution 1:

For using pdfkit in Django to access a protected view, just pass along the cookies in the from_url() function call.

cookie_list = request.COOKIES
# pass the cookies. You can add whatever other options you want to use
options = {
        'cookie' : [
            ('csrftoken', cookie_list['csrftoken']),
            ('sessionid', cookie_list['sessionid']),
            ]
        }

# Generate the pdf
pdf = pdfkit.from_url(url_to_page,False, options=options)

I also had a hard time with it because just passing in the cookie dictionary doesn't work.

Solution 2:

Check this :) You probably need requests, if you don't have. I don't know much about the salesforce library.

import requests
import pdfkit

session = requests.session()


defdownload(session,username,password):
    session.get('https://bneadf.thiess.com.au/adfs/ls/')

    ua = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
    session.headers = {'User-Agent': self.ua}
    payload = {'UserName':username,
        'Password':password,
        'AuthMethod':'FormsAuthentication'}

    session.post('https://bneadf.thiess.com.au/adfs/ls/', data = payload, headers = session.headers)
    my_html = session.get('https://thiess.my.salesforce.com/0069000000IZH71')
    my_pdf = open('myfile.html','wb+')
    my_pdf.write(my_html.content)
    my_pdf.close()

    path_wkthmltopdf = 'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe'
    config = pdfkit.configuration(wkhtmltopdf=bytes(path_wkthmltopdf, 'utf8'))


    pdfkit.from_file('myfile.html', 'out.pdf')

download(session,"yourusername","yourpass")

Solution 3:

I am having a similar issue as well. I noticed there is an advanced options setting on the github/documetation where you can pass cookies and a cookiejar along with a username and password. I know that this seems to be something that you tried but it looks like you did not set the cookie name correctly. Here is the docs from https://github.com/JazzCore/python-pdfkit

options = {
  'page-size': 'Letter',
  'margin-top': '0.75in',
  'margin-right': '0.75in',
  'margin-bottom': '0.75in',
  'margin-left': '0.75in',
  'encoding': "UTF-8",
  'custom-header' : [
      ('Accept-Encoding', 'gzip')
  ]
  'cookie': [
      ('cookie-name1', 'cookie-value1'),
      ('cookie-name2', 'cookie-value2'),
  ],
  'no-outline': None
}

pdfkit.from_url('http://google.com', 'out.pdf', options=options)

It seems that for the 'cookie' object you need to pass in a list with the cookie name and value as tuples. I havent been able to get it to work on my example, I think because my webpage uses a lot of javascript/css. However, using the requests method that Attila mentioned you might be able to do something with the salesforce login?

cookie_list = session.cookies.items()

then maybe try your example again?

options1 = {
  'page-size': None,
  'margin-top': None,
  'margin-right': None,
  'margin-bottom': None,
  'margin-left': None,
  'encoding': None,
  'custom-header' : None, 
  'cookie': cookie_list,
  'no-outline': None
}

Post a Comment for "Create Pdf Of A Https Webpage Which Requires Login Using Pdfkit"