2012-04-23 13 views
12

arkasında Oluşturmak PDF mayın çalışma almak için. Terminal'deyim - hiçbir şey fantezi değil.Zaten internette var. Ilk günlüğüne beni gerektirir WKHTMLTOPDF kullanarak PDF oluşturmak için bu konuda bazı çalışıyorum ama görünmüyor Kimlik Duvar

I (diğer şeyler bir sürü arasında) denedim:

/usr/bin/wkhtmltopdf --post username=myusername --post password=mypassword "URL to Generate" test.pdf 

/usr/bin/wkhtmltopdf --username myusername --password mypassword "URL to Generate" test.pdf 

/usr/bin/wkhtmltopdf --cookie-jar my.jar --post username=myusername --post password=mypassword "URL to Generate Cookie For" 

kullanıcı adı ve şifre hem id ve formdaki giriş alanlarının name bulunmaktadır. My.jar dosyasının görünmesini sağlıyorum, ancak hiçbir şey yazılmadı.

Belirli sorular:

  1. Ben giriş sayfası ve/veya herhangi bir yerde formu eylemi belirterek mıdır?
  2. --cookie-jar parametresinin çeşitli yerlerde (gerek ve gerekse gerekse) belirtilmiştir. Bu gerekli olmalı, nasıl çalışır? My.jar dosyasını oluşturdum ama nasıl tekrar kullanabilirim? Referans:

http://code.google.com/p/wkhtmltopdf/issues/detail?id=356


DÜZENLEME:

Şüphesiz birileri başarıyla yaptı? Bir örneği sergilemenin iyi bir yolu, birisinin potansiyel bir değişkeni ortadan kaldırmak için giriş kimlik bilgileri gerektiren bazı popüler web sitelerinde çalışmaya başlaması durumunda olabilir.

cevap

8

password_value şifre Videodan sonra Videodan sonra kullanıcı adı user_name_value vardır. Güvenlidir, üç çerez kurar, iki kez yönlendirir ve kullanıcı adı ve parola dışında bir dizi başka değişken gönderir, bunlardan biri bir çerez değeri gerektirir (hatta değerin post değişkenine eklenmesini denedim, ancak şans yok). Bu muhtemelen oldukça nadir bir sorundur - hiçbir şekilde WKHTMLTOPDF hatası.

Oturum açmak ve sayfayı yerel bir dosyaya yazmak için CURL kullanarak yaralarım, sonra WKHTMLTOPDF'yi buna karşı çalıştırdım.Benzer bir sorunu olan herkes için kesinlikle sağlam bir çalışma.


Düzenleme: Sen phantomjs ile PDF işlemek çalışırken ilginizi çekebilir

curl_setopt($ch, CURLOPT_HEADER, 1); # Change to 1 to see WTF 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
curl_setopt($ch, CURLOPT_URL, $loginUrl); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postFields); 
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
+0

Sizin için hile yaptı bu cURL sözdizimini özetlemek için çok daha yararlı olurdu. –

+0

Merhaba Ifedi, benim özel uygulama aslında kullanım durumunuz için yararlı olacağından emin değilim (bu benim ihtiyaçlarına özgü ve PHP ile uygulanan yazı dizisidir) ama ekledim, umarım yardımcı olur. – Chords

12

Her oturum açma formu her site için farklı olacaktır. Yapmak istediğiniz şey, sayfadaki HTML’yi okuyarak (muhtemelen farkında olduğunuzu), o giriş formunun hedefine ulaşmanız için gereken her şeyi belirlemektir. Siteler arası istek sahtekarlıklarını önlemek için kullanıcı adı/şifre alanlarının üstünde ek bir gizli alan olabilir.

Çerez kavanozu parametresi, web sunucusundan aldığı çerezleri sakladığı bir dosyadır. İlk istekte oturum açma formunu belirtmeniz ve sonraki isteklerde de çerezi/oturumu kullanmaya devam etmeniz gerekir. .

  1. bak ve gerekli sayfada herhangi ek parametreler olup olmadığını görmek: Web sunucusu giriş yaptıktan sonra geri verdik ki bilgi

    Yani o Özetle.
  2. Gönderdiğiniz URL'nin, o sayfadaki form öğesinin ACTION özelliği ile aynı olduğundan emin olun.
  3. Hem giriş isteğinde hem de ikinci içerik isteğinde --cookie-jar parametresini kullanın. Videodan sonra parametreler için
  4. sözdizimi ben giriş yapmaya çalışıyorum formu çok karmaşık olduğunu düşünüyorum
+0

Teşekkürler, hsanders. Başka bir rota almama rağmen, cevabınız sağlam görünüyor. Cevap vermek için zaman ayırdığınız için teşekkürler! – Chords

+0

@Chords Sorun değil. Daha önce birkaç kez wkhtmltopdf kullandım. Bence daha karmaşık bir durum için, tarif ettiğin gibi biraz acı çekiyormuş gibi düşünüyorum ... İzleminde bahsettiğin yönlendirmelerle nasıl başa çıkacağından emin değilim, asla bununla uğraşmak zorunda kalmamıştım. – hsanders

3

: CURL, ilgi.

phantomjs rasterize.js http://blah.com/ webgl.pdf 

Rasterize.js here. Temel olarak, giriş sayfasında oturum açmak için biraz javascript yazıyorsunuz, sonra PDF oluşturma işlemini yapıyorsunuz. Bununla birlikte, çıktı, wkhtmltopdf ile aynı değildir. Bununla birlikte, çıktı, wkhtmltopdf ile aynı değildir. HTML'yi bir dosyaya kaydedebilir ve phantomjs PDF çıkışı çok korkunçsa wkhtmltopdf ile render edebilirsiniz.

İlgili konular