pdfcrowd 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/pdfcrowd.rb +66 -52
  3. metadata +9 -22
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ data.tar.gz: 5562a39162351e15148ecf1ffbc6fe7bd2c7f039
4
+ metadata.gz: 330aeca5d18142d232dd63431f35c74bc8221d80
5
+ SHA512:
6
+ data.tar.gz: d98fc1713d73e1818760af9ce050385abf2961e4eebb262e2605d77efdf1056aa1296d1c3d8b381ddc17c5becf188e35806c414a9eab34fa558142662bc8d5aa
7
+ metadata.gz: bbd5c20891097d095e1c567a4da82e55f978913d0cc90bc74cd60691d3558f8e5207adfee2444a3d1dd8393aef25f4433d4430d7b7ce1d19b82f08d8027ca925
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2009-2011 pdfcrowd.com
1
+ # Copyright (C) 2009-2013 pdfcrowd.com
2
2
  #
3
3
  # Permission is hereby granted, free of charge, to any person
4
4
  # obtaining a copy of this software and associated documentation
@@ -8,10 +8,10 @@
8
8
  # copies of the Software, and to permit persons to whom the
9
9
  # Software is furnished to do so, subject to the following
10
10
  # conditions:
11
- #
11
+ #
12
12
  # The above copyright notice and this permission notice shall be
13
13
  # included in all copies or substantial portions of the Software.
14
- #
14
+ #
15
15
  # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
16
  # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
17
  # OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -28,26 +28,26 @@ require 'cgi'
28
28
  module Pdfcrowd
29
29
  # constants for setPageLayout()
30
30
  SINGLE_PAGE, CONTINUOUS, CONTINUOUS_FACING = 1, 2, 3
31
-
31
+
32
32
  # constants for setPageMode()
33
33
  NONE_VISIBLE, THUMBNAILS_VISIBLE, FULLSCREEN = 1, 2, 3
34
-
34
+
35
35
  # constants for setInitialPdfZoomType()
36
36
  FIT_WIDTH, FIT_HEIGHT, FIT_PAGE = 1, 2, 3
37
37
 
38
38
 
39
39
  #
40
40
  # Thrown when an error occurs.
41
- #
41
+ #
42
42
  class Error < RuntimeError
43
43
  attr_reader :http_code, :error
44
-
44
+
45
45
  def initialize(error, http_code=nil)
46
46
  super()
47
47
  @http_code = http_code
48
48
  @error = error
49
49
  end
50
-
50
+
51
51
  def to_s()
52
52
 
53
53
  @http_code ? "#{@http_code} - #{@error}" : @error
@@ -57,9 +57,9 @@ module Pdfcrowd
57
57
 
58
58
  #
59
59
  # Pdfcrowd API client.
60
- #
60
+ #
61
61
  class Client
62
-
62
+
63
63
  #
64
64
  # Client constructor.
65
65
  #
@@ -68,39 +68,39 @@ module Pdfcrowd
68
68
  #
69
69
  def initialize(username, apikey)
70
70
  useSSL(false)
71
- @fields = {
71
+ @fields = {
72
72
  'username' => username,
73
73
  'key' => apikey,
74
74
  'html_zoom' => 200,
75
75
  'pdf_scaling_factor' => 1
76
76
  }
77
77
  end
78
-
78
+
79
79
  #
80
80
  # Converts a web page.
81
- #
81
+ #
82
82
  # uri -- a web page URL
83
83
  # outstream -- an object having method 'write(data)'; if nil then the
84
84
  # return value is a string containing the PDF.
85
- #
85
+ #
86
86
  def convertURI(uri, outstream=nil)
87
87
  return call_api_urlencoded('/api/pdf/convert/uri/', uri, outstream)
88
88
  end
89
-
89
+
90
90
  #
91
91
  # Converts an in-memory html document.
92
92
  #
93
93
  # content -- a string containing an html document
94
94
  # outstream -- an object having method 'write(data)'; if nil then the
95
95
  # return value is a string containing the PDF.
96
- #
96
+ #
97
97
  def convertHtml(content, outstream=nil)
98
98
  return call_api_urlencoded('/api/pdf/convert/html/', content, outstream)
99
99
  end
100
100
 
101
101
  #
102
102
  # Converts an html file.
103
- #
103
+ #
104
104
  # fpath -- a path to an html file
105
105
  # outstream -- an object having method 'write(data)'; if nil then the
106
106
  # return value is a string containing the PDF.
@@ -111,65 +111,73 @@ module Pdfcrowd
111
111
 
112
112
  #
113
113
  # Returns the number of available conversion tokens.
114
- #
114
+ #
115
115
  def numTokens()
116
116
  uri = '/api/user/%s/tokens/' % @fields['username']
117
117
  return Integer(call_api_urlencoded(uri))
118
118
  end
119
-
119
+
120
120
  def useSSL(use_ssl)
121
121
  @use_ssl = use_ssl
122
122
  @api_uri = use_ssl ? HTTPS_API_URI : HTTP_API_URI
123
123
  end
124
-
124
+
125
125
  def setUsername(username)
126
126
  @fields['username'] = username
127
127
  end
128
-
128
+
129
129
  def setApiKey(key)
130
130
  @fields['key'] = key
131
131
  end
132
-
132
+
133
133
  def setPageWidth(value)
134
134
  @fields['width'] = value
135
135
  end
136
-
136
+
137
137
  def setPageHeight(value)
138
138
  @fields['height'] = value
139
139
  end
140
-
140
+
141
141
  def setHorizontalMargin(value)
142
- @fields['hmargin'] = value.to_s()
142
+ @fields['margin_right'] = @fields['margin_left'] = value.to_s()
143
143
  end
144
-
144
+
145
145
  def setVerticalMargin(value)
146
- @fields['vmargin'] = value.to_s()
146
+ @fields['margin_top'] = @fields['margin_bottom'] = value.to_s()
147
147
  end
148
-
148
+
149
+ def setPageMargins(top, right, bottom, left)
150
+ @fields['margin_top'] = top.to_s()
151
+ @fields['margin_right'] = right.to_s()
152
+ @fields['margin_bottom'] = bottom.to_s()
153
+ @fields['margin_left'] = left.to_s()
154
+ end
155
+
156
+
149
157
  def setEncrypted(val=true)
150
158
  @fields['encrypted'] = val
151
159
  end
152
-
160
+
153
161
  def setUserPassword(pwd)
154
162
  @fields['user_pwd'] = pwd
155
163
  end
156
-
164
+
157
165
  def setOwnerPassword(pwd)
158
166
  @fields['owner_pwd'] = pwd
159
167
  end
160
-
168
+
161
169
  def setNoPrint(val=true)
162
170
  @fields['no_print'] = val
163
171
  end
164
-
172
+
165
173
  def setNoModify(val=true)
166
174
  @fields['no_modify'] = val
167
175
  end
168
-
176
+
169
177
  def setNoCopy(val=true)
170
178
  @fields['no_copy'] = val
171
179
  end
172
-
180
+
173
181
  def setPageLayout(value)
174
182
  assert { value > 0 and value <= 3 }
175
183
  @fields['page_layout'] = value
@@ -225,7 +233,7 @@ module Pdfcrowd
225
233
  assert { value>0 and value<=3 }
226
234
  @fields['initial_pdf_zoom_type'] = value
227
235
  end
228
-
236
+
229
237
  def setInitialPdfExactZoom(value)
230
238
  @fields['initial_pdf_zoom_type'] = 4
231
239
  @fields['initial_pdf_zoom'] = value
@@ -246,15 +254,15 @@ module Pdfcrowd
246
254
  def setFooterHtml(value)
247
255
  @fields['footer_html'] = value
248
256
  end
249
-
257
+
250
258
  def setFooterUrl(value)
251
259
  @fields['footer_url'] = value
252
260
  end
253
-
261
+
254
262
  def setHeaderHtml(value)
255
263
  @fields['header_html'] = value
256
264
  end
257
-
265
+
258
266
  def setHeaderUrl(value)
259
267
  @fields['header_url'] = value
260
268
  end
@@ -296,28 +304,28 @@ module Pdfcrowd
296
304
  # Private stuff
297
305
  #
298
306
 
299
- private
307
+ private
300
308
 
301
309
  def create_http_obj()
302
310
  if @use_ssl
303
- require 'net/https' #apt-get install libopenssl-ruby
311
+ require 'net/https' #apt-get install libopenssl-ruby
304
312
  http = Net::HTTP.new($api_hostname, $api_https_port)
305
313
  # OpenSSL::SSL::VERIFY_PEER fails here:
306
314
  # ... certificate verify failed ...
307
315
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
308
- http.use_ssl = @use_ssl
316
+ http.use_ssl = @use_ssl
309
317
  else
310
318
  http = Net::HTTP.new($api_hostname, $api_http_port)
311
319
  end
312
320
  return http
313
321
  end
314
-
322
+
315
323
  def call_api_urlencoded(path, src=nil, out_stream=nil)
316
324
  request = Net::HTTP::Post.new(path)
317
325
  request.set_form_data(rename_post_data({'src' => src}))
318
326
  return call_api(request, out_stream)
319
327
  end
320
-
328
+
321
329
 
322
330
  def call_api(request, out_stream)
323
331
  http = create_http_obj()
@@ -348,7 +356,7 @@ module Pdfcrowd
348
356
  @fields.each { |key, val| result[key] = val if val }
349
357
  result
350
358
  end
351
-
359
+
352
360
  def encode_multipart_post_data(filename)
353
361
  boundary = '----------ThIs_Is_tHe_bOUnDary_$'
354
362
  body = []
@@ -369,7 +377,7 @@ module Pdfcrowd
369
377
  content_type = 'multipart/form-data; boundary=%s' % boundary
370
378
  return content_type, body
371
379
  end
372
-
380
+
373
381
  def post_multipart(fpath, out_stream)
374
382
  req = Net::HTTP::Post.new('/api/pdf/convert/html/')
375
383
  req.content_type, req.body = encode_multipart_post_data(fpath)
@@ -398,7 +406,7 @@ HTTPS_API_URI = "https://#{$api_hostname}#{API_SELECTOR_BASE}"
398
406
  # ---------------------------------------------------------------------------
399
407
  #
400
408
  # Test
401
- #
409
+ #
402
410
 
403
411
  if __FILE__ == $0
404
412
  if ARGV.length < 2
@@ -419,10 +427,10 @@ if __FILE__ == $0
419
427
 
420
428
  some_html="<html><body>Uploaded content!</body></html>"
421
429
  Dir.chdir(File.dirname($0))
422
- $test_dir = '../../test_files'
430
+ $test_dir = '../test_files'
423
431
 
424
432
  def out_stream(name, use_ssl)
425
- fname = "#{$test_dir}/out/rb_client_#{name}"
433
+ fname = $test_dir + "/out/rb_client_#{name}"
426
434
  if use_ssl
427
435
  fname = fname + '_ssl'
428
436
  end
@@ -434,7 +442,7 @@ if __FILE__ == $0
434
442
  client.useSSL(use_ssl)
435
443
  begin
436
444
  ntokens = client.numTokens()
437
- client.convertURI('http://www.jagpdf.org/', out_stream('uri', use_ssl))
445
+ client.convertURI('http://www.web-to-pdf.com', out_stream('uri', use_ssl))
438
446
  client.convertHtml(some_html, out_stream('content', use_ssl))
439
447
  client.convertFile("#{$test_dir}/in/simple.html", out_stream('upload', use_ssl))
440
448
  client.convertFile("#{$test_dir}/in/archive.tar.gz", out_stream('archive', use_ssl))
@@ -476,9 +484,9 @@ if __FILE__ == $0
476
484
  [:setInitialPdfZoomType, Pdfcrowd::FIT_PAGE],
477
485
  [:setInitialPdfExactZoom, 113],
478
486
  [:setFooterHtml, '<b>bold</b> and <i>italic</i> <img src="http://pdfcrowd.com/static/images/logo175x30.png" />'],
479
- [:setFooterUrl, 'http://google.com'],
487
+ [:setFooterUrl, 'http://pdfcrowd.com/hub/random/footer.html'],
480
488
  [:setHeaderHtml, 'page %p out of %n'],
481
- [:setHeaderUrl, 'http://google.com'],
489
+ [:setHeaderUrl, 'http://pdfcrowd.com/hub/random/header.html'],
482
490
  [:setPdfScalingFactor, 0.5],
483
491
  [:setPageBackgroundColor, 'ee82EE'],
484
492
  [:setTransparentBackground, true]]
@@ -491,5 +499,11 @@ if __FILE__ == $0
491
499
  print 'FAILED: ', why
492
500
  exit(1)
493
501
  end
494
-
502
+
503
+ # 4 margins
504
+ client = Pdfcrowd::Client.new(ARGV[0], ARGV[1])
505
+ client.setPageMargins('0.25in', '0.5in', '0.75in', '1.0in')
506
+ client.convertHtml('<div style="background-color:red;height:100%">4 margins</div>', out_stream('4margins', false))
507
+
508
+
495
509
  end
metadata CHANGED
@@ -1,13 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pdfcrowd
3
3
  version: !ruby/object:Gem::Version
4
- hash: 3
5
- prerelease:
6
- segments:
7
- - 2
8
- - 3
9
- - 0
10
- version: 2.3.0
4
+ version: 2.4.0
11
5
  platform: ruby
12
6
  authors:
13
7
  - Pdfcrowd Team
@@ -15,7 +9,7 @@ autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
11
 
18
- date: 2012-02-09 00:00:00 Z
12
+ date: 2013-03-13 00:00:00 Z
19
13
  dependencies: []
20
14
 
21
15
  description: It lets you easily convert web pages and raw HTML code to PDF in your Ruby applications.
@@ -31,35 +25,28 @@ files:
31
25
  homepage: https://pdfcrowd.com/html-to-pdf-api/
32
26
  licenses: []
33
27
 
28
+ metadata: {}
29
+
34
30
  post_install_message:
35
31
  rdoc_options: []
36
32
 
37
33
  require_paths:
38
34
  - lib
39
35
  required_ruby_version: !ruby/object:Gem::Requirement
40
- none: false
41
36
  requirements:
42
- - - ">="
37
+ - &id001
38
+ - ">="
43
39
  - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 0
47
40
  version: "0"
48
41
  required_rubygems_version: !ruby/object:Gem::Requirement
49
- none: false
50
42
  requirements:
51
- - - ">="
52
- - !ruby/object:Gem::Version
53
- hash: 3
54
- segments:
55
- - 0
56
- version: "0"
43
+ - *id001
57
44
  requirements: []
58
45
 
59
46
  rubyforge_project:
60
- rubygems_version: 1.7.2
47
+ rubygems_version: 2.0.3
61
48
  signing_key:
62
- specification_version: 3
49
+ specification_version: 4
63
50
  summary: A client for the Pdfcrowd HTML to PDF API.
64
51
  test_files: []
65
52