RESTインターフェースでCopper PDFにアクセスする場合、パラメータが application/x-www-form-urlencoded 形式だと、POSTできるサイズに上限があります(概ね190KB)。
大きなデータをRESTインターフェースで送る場合は、multipart/form-data 形式で送って下さい。以下はRubyとPythonのコード例です。
Ruby:
require 'httpclient'
# 変換対象のHTML
data = <<DATARubyからCopper PDFを使う。
DATA
# POSTの準備
client = HTTPClient.new
postdata = {
"rest.user" => "user",
"rest.password" => "kappa",
"rest.main" => data,
}# 大きなデータを扱えるようにmultipart/formdataで送信(boundaryは適当な文字列)
boundary = "3w48588hfwfdwed2332hdiuj2d3jiuhd32"
puts client.post_content("http://localhost:8097/transcode", postdata,
"content-type" => "multipart/form-data, boundary=#{boundary}")
Python:
import urllib2
# multipart/form-dataの出力(boundaryは適当な文字列)
boundary = '3w48588hfwfdwed2332hdiuj2d3jiuhd32'
def multipart_formdata(form_dict):
disposition = 'Content-Disposition: form-data; name="%s"'
lines = []
for k, v in form_dict.iteritems():
lines.append('--' + boundary)
lines.append(disposition % k)
lines.append('')
lines.append(v)
lines.append("--" + boundary + "--")
lines.append('')
value = "rn".join(lines)
return value# 変換対象のHTML
data = """PythonからCopper PDFを使う。
"""
# POSTの実行
params = {'rest.user':'user',
'rest.password':'kappa',
'rest.main':data}url = 'http://localhost:8097/transcode'
req = urllib2.Request(url)
req.add_header("Content-Type",
"multipart/form-data; boundary=" + boundary)
data = multipart_formdata(params)
f = urllib2.urlopen(req, data)# 結果表示
print f.read()