logo

pdftocairo filter

← Back to Filter List

pdftocairo


Runs `pdftocairo` from the poppler library. Converts PDF input to various output formats inclusing SVG.

Aliases for this filter

  • pdftocairo
  • pdf2cairo
  • pdf2svg
  • pdftosvg

Converts from file formats:

  • .pdf

To file formats:

  • .svg
  • .png
  • .jpg
  • .ps
  • .eps
  • .pdf

Available settings:

SettingDescriptionDefault
add-new-filesBoolean or list of extensions/patterns to match.False
added-in-versionDexy version when this filter was first available.
additional-doc-filtersFilters to apply to additional documents created as side effects.{}
additional-doc-settingsSettings to apply to additional documents created as side effects.{}
argsArguments to be passed to the executable.
check-return-codeWhether to look for nonzero return code.True
clargsArguments to be passed to the executable (same as 'args').
command-stringThe full command string.%(prog)s %(format)s %(args)s "%(script_file)s" "%(output_file)s"
data-typeAlias of custom data class to use to store filter output.generic
envDictionary of key-value pairs to be added to environment for runs.{}
examplesTemplates which should be used as examples for this filter.[]
exclude-add-new-filesList of patterns to skip even if they match add-new-files.[]
exclude-new-files-from-dirList of directories to skip when adding new files.[]
executableThe executable to be runpdftocairo
extFile extension to output.None
ext-to-formatA dict of mappings from file extensions to format flags that need to be passed on the command line, e.g. for ragel with ruby host language .rb => -R{'.eps': '-eps', '.jpg': '-jpeg', '.pdf': '-pdf', '.png': '-png', '.ps': '-ps', '.svg': '-svg'}
extension-mapDictionary mapping input extensions to default output extensions.None
helpHelpstring for plugin.Runs `pdftocairo` from the poppler library. Converts PDF input to various output formats inclusing SVG.
initial-timeout10
input-extensionsList of extensions which this filter can accept as input.['.pdf']
keep-originalsWhether, if additional-doc-filters are specified, the original unmodified docs should also be added.False
make-dummy-outputWhether to make a dummy output file when one is not generated and add-new-files is True.False
mkdirA directory which should be created in working dir.None
mkdirsA list of directories which should be created in working dir.[]
nodocWhether filter should be excluded from documentation.False
outputWhether to output results of this filter by default by reporters such as 'output' or 'website'.False
output-extensionsList of extensions which this filter can produce as output.['.svg', '.png', '.jpg', '.ps', '.eps', '.pdf']
override-workspace-exclude-filtersIf True, document will be populated to other workspaces ignoring workspace-exclude-filters.False
path-extensionsstrings to extend path with[]
preserve-prior-data-classWhether output data class should be set to match the input data class.False
record-varsWhether to add code that will automatically record values of variables.False
require-outputShould dexy raise an exception if no output is produced by this filter?True
scriptargsArguments to be passed to the executable.
tagsTags which describe the filter.['pdf', 'image']
timeout10
use-wdWhether to use a custom working directory when running filter.True
variablesA dictionary of variable names and values to make available to this filter.{}
varsA dictionary of variable names and values to make available to this filter.{}
version-commandCommand to call to return version of installed software.None
windows-version-commandCommand to call on windows to return version of installed software.None
workspace-exclude-filtersFilters whose output should be excluded from workspace.['pyg']
workspace-includesIf set to a list of filenames or extensions, only these will be populated to working dir.None
write-stderr-to-stdoutShould stderr be piped to stdout?True
Filter Source Code
class PdfToCairo(SubprocessFormatFlagFilter):
    """
    Runs `pdftocairo` from the poppler library.

    Converts PDF input to various output formats inclusing SVG.
    """
    aliases = ['pdftocairo', 'pdf2cairo', 'pdf2svg', 'pdftosvg']
    _settings = {
        'command-string': '%(prog)s %(format)s %(args)s "%(script_file)s" "%(output_file)s"',
        'executable': 'pdftocairo',
        'tags' : ['pdf', 'image'],
        'input-extensions' : ['.pdf'],
        'output-extensions' : ['.svg', '.png', '.jpg', '.ps', '.eps', '.pdf'],
        'ext-to-format' : {
            '.png' : '-png',
            '.jpg' : '-jpeg',
            '.ps' : '-ps',
            '.eps' : '-eps',
            '.pdf' : '-pdf',
            '.svg' : '-svg'
            }
        }

    def process(self):
        command = self.command_string()
        proc, stdout = self.run_command(command, self.setup_env())
        self.handle_subprocess_proc_return(command, proc.returncode, stdout)

        if not self.output_data.is_cached():
            # Find the first page
            for pagenum in ('1', '01', '001', '0001',):
                basename = os.path.join(self.workspace(), self.output_data.name)
                first_page_file = "%s-%s.png" % (basename, pagenum)
                if file_exists(first_page_file):
                    print("Copy from '%s'" % first_page_file)
                    self.output_data.copy_from_file(first_page_file)
                    break

        assert self.output_data.is_cached()

        if self.setting('add-new-files'):
            self.log_debug("adding new files found in %s for %s" % (self.workspace(), self.key))
            self.add_new_files()

Content © 2020 Dr. Ana Nelson | Site Design © Copyright 2011 Andre Gagnon | All Rights Reserved.