from ..converter import KnowledgePostConverter

from .html import HTMLConverter


class PDFConverter(KnowledgePostConverter):
    '''
    Use this as a template for new KnowledgePostConverters.
    '''
    _registry_keys = ['pdf']

    @property
    def dependencies(self):
        # Dependencies required for this converter on top of core knowledge-repo dependencies
        return ['weasyprint']

    def from_file(self, filename, **opts):
        raise NotImplementedError

    def from_string(self, filename, **opts):
        raise NotImplementedError

    def to_file(self, filename, **opts):
        with open(filename, 'wb') as f:
            f.write(self.to_string())

    def to_string(self, **opts):
        from weasyprint import HTML
        html = HTMLConverter(self.kp).to_string()
        return HTML(string=html).write_pdf()

from ..converter import KnowledgePostConverter

from .html import HTMLConverter


class PDFConverter(KnowledgePostConverter):
    '''
    Use this as a template for new KnowledgePostConverters.
    '''
    _registry_keys = ['pdf']

    @property
    def dependencies(self):
        # Dependencies required for this converter on top of core knowledge-repo dependencies
        return ['weasyprint']

    def from_file(self, filename, **opts):
        raise NotImplementedError

    def from_string(self, filename, **opts):
        raise NotImplementedError

    def to_file(self, filename, **opts):
        with open(filename, 'wb') as f:
            f.write(self.to_string())

    def to_string(self, **opts):
        from weasyprint import HTML, CSS
        html = HTMLConverter(self.kp).to_string()
        return HTML(string=html).write_pdf(stylesheets=[CSS(string='body { font-family: Helvetica, sans-serif !important }')])

Change PDF font to Helvetica
Change PDF font to Helvetica

Changing the PDF font from the default to Helvetica
  from ..converter import KnowledgePostConverter
  
  from .html import HTMLConverter
  
  
  class PDFConverter(KnowledgePostConverter):
      '''
      Use this as a template for new KnowledgePostConverters.
      '''
      _registry_keys = ['pdf']
  
      @property
      def dependencies(self):
          # Dependencies required for this converter on top of core knowledge-repo dependencies
          return ['weasyprint']
  
      def from_file(self, filename, **opts):
          raise NotImplementedError
  
      def from_string(self, filename, **opts):
          raise NotImplementedError
  
      def to_file(self, filename, **opts):
          with open(filename, 'wb') as f:
              f.write(self.to_string())
  
      def to_string(self, **opts):
-         from weasyprint import HTML
+         from weasyprint import HTML, CSS
          html = HTMLConverter(self.kp).to_string()
-         return HTML(string=html).write_pdf()
+         return HTML(string=html).write_pdf(stylesheets=[CSS(string='body { font-family: Helvetica, sans-serif !important }')])
  
Change PDF font to Helvetica
## Code Before:
from ..converter import KnowledgePostConverter

from .html import HTMLConverter


class PDFConverter(KnowledgePostConverter):
    '''
    Use this as a template for new KnowledgePostConverters.
    '''
    _registry_keys = ['pdf']

    @property
    def dependencies(self):
        # Dependencies required for this converter on top of core knowledge-repo dependencies
        return ['weasyprint']

    def from_file(self, filename, **opts):
        raise NotImplementedError

    def from_string(self, filename, **opts):
        raise NotImplementedError

    def to_file(self, filename, **opts):
        with open(filename, 'wb') as f:
            f.write(self.to_string())

    def to_string(self, **opts):
        from weasyprint import HTML
        html = HTMLConverter(self.kp).to_string()
        return HTML(string=html).write_pdf()

## Instruction:
Change PDF font to Helvetica
## Code After:
from ..converter import KnowledgePostConverter

from .html import HTMLConverter


class PDFConverter(KnowledgePostConverter):
    '''
    Use this as a template for new KnowledgePostConverters.
    '''
    _registry_keys = ['pdf']

    @property
    def dependencies(self):
        # Dependencies required for this converter on top of core knowledge-repo dependencies
        return ['weasyprint']

    def from_file(self, filename, **opts):
        raise NotImplementedError

    def from_string(self, filename, **opts):
        raise NotImplementedError

    def to_file(self, filename, **opts):
        with open(filename, 'wb') as f:
            f.write(self.to_string())

    def to_string(self, **opts):
        from weasyprint import HTML, CSS
        html = HTMLConverter(self.kp).to_string()
        return HTML(string=html).write_pdf(stylesheets=[CSS(string='body { font-family: Helvetica, sans-serif !important }')])
