aboutsummaryrefslogtreecommitdiffstats
path: root/app/models
diff options
context:
space:
mode:
authorSeb Bacon <seb.bacon@gmail.com>2011-08-10 16:58:12 +0100
committerSeb Bacon <seb.bacon@gmail.com>2011-08-10 18:25:24 +0100
commit79a2047f04aad0d04b56aa8f81152e868b4e3951 (patch)
tree7f07dae169e81c6ece47a828ac5e4bf351faac29 /app/models
parent27caabcff0892414b3bb4c8f69f28d02b7d26035 (diff)
Apply censor rules even when pdftk refuses to compress. Also provide for alternative to pdftk for compression. Closes #123.
Diffstat (limited to 'app/models')
-rw-r--r--app/models/incoming_message.rb14
1 files changed, 13 insertions, 1 deletions
diff --git a/app/models/incoming_message.rb b/app/models/incoming_message.rb
index 7d9cfbfa1..90ab84a8f 100644
--- a/app/models/incoming_message.rb
+++ b/app/models/incoming_message.rb
@@ -461,11 +461,23 @@ class IncomingMessage < ActiveRecord::Base
if censored_uncompressed_text != uncompressed_text
# then use the altered file (recompressed)
recompressed_text = nil
- IO.popen("/usr/bin/pdftk - output - compress", "r+") do |child|
+ if MySociety::Config.get('USE_GHOSTSCRIPT_COMPRESSION') == true
+ command = "gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/screen -dNOPAUSE -dQUIET -dBATCH -sOutputFile=- -"
+ else
+ command = "/usr/bin/pdftk - output - compress"
+ end
+ IO.popen(command, "r+") do |child|
child.write(censored_uncompressed_text)
child.close_write()
recompressed_text = child.read()
end
+ if recompressed_text.nil? || recompressed_text.empty?
+ # buggy versions of pdftk sometimes fail on
+ # compression, I don't see it's a disaster in
+ # these cases to save an uncompressed version?
+ recompressed_text = censored_uncompressed_text
+ logger.warn "Unable to compress PDF; problem with your pdftk version?"
+ end
if !recompressed_text.nil? && !recompressed_text.empty?
text[0..-1] = recompressed_text # [0..-1] makes it change the 'text' string in place
end