mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
56f1ffa067
was previously matching any pdf file, which caused it to run for embedded pdf figures produced during the mklatex run
37 lines
1.2 KiB
CoffeeScript
37 lines
1.2 KiB
CoffeeScript
fs = require "fs"
|
|
Path = require "path"
|
|
spawn = require("child_process").spawn
|
|
logger = require "logger-sharelatex"
|
|
_ = require "underscore"
|
|
|
|
module.exports = OutputFileOptimiser =
|
|
|
|
optimiseFile: (src, dst, callback = (error) ->) ->
|
|
# check output file (src) and see if we can optimise it, storing
|
|
# the result in the build directory (dst)
|
|
if src.match(/\/output\.pdf$/)
|
|
OutputFileOptimiser.optimisePDF src, dst, callback
|
|
else
|
|
callback (null)
|
|
|
|
optimisePDF: (src, dst, callback = (error) ->) ->
|
|
tmpOutput = dst + '.opt'
|
|
args = ["--linearize", src, tmpOutput]
|
|
logger.log args: args, "running qpdf command"
|
|
|
|
proc = spawn("qpdf", args)
|
|
stdout = ""
|
|
proc.stdout.on "data", (chunk) ->
|
|
stdout += chunk.toString()
|
|
callback = _.once(callback) # avoid double call back for error and close event
|
|
proc.on "error", (err) ->
|
|
logger.warn {err, args}, "qpdf failed"
|
|
callback(null) # ignore the error
|
|
proc.on "close", (code) ->
|
|
if code != 0
|
|
logger.warn {code, args}, "qpdf returned error"
|
|
return callback(null) # ignore the error
|
|
fs.rename tmpOutput, dst, (err) ->
|
|
if err?
|
|
logger.warn {tmpOutput, dst}, "failed to rename output of qpdf command"
|
|
callback(null) # ignore the error
|