|
|
@@ -19,6 +19,7 @@ import subprocess
|
|
|
from docx import Document
|
|
|
from docx.oxml.ns import qn
|
|
|
from docx.oxml import OxmlElement
|
|
|
+import tempfile
|
|
|
logger = get_logger('pandoc')
|
|
|
|
|
|
class PandocConverter:
|
|
|
@@ -34,6 +35,7 @@ class PandocConverter:
|
|
|
"""
|
|
|
self.font_name = font_name
|
|
|
self.include_toc = include_toc
|
|
|
+ self._temp_dir = tempfile.TemporaryDirectory() # Create a temporary directory for reference docs
|
|
|
|
|
|
def convert_md_to_docx(self, md_path: Path, output_path: Path) -> bool:
|
|
|
"""Convert markdown file to docx using pandoc with custom options"""
|
|
|
@@ -51,7 +53,7 @@ class PandocConverter:
|
|
|
PANDOC_EXE,
|
|
|
'-f', 'markdown+yaml_metadata_block',
|
|
|
'-t', 'docx',
|
|
|
- '--reference-doc', self._get_reference_doc(md_path.parent),
|
|
|
+ '--reference-doc', self._get_reference_doc(),
|
|
|
'-o', str(output_path),
|
|
|
str(md_path)
|
|
|
]
|
|
|
@@ -150,9 +152,9 @@ class PandocConverter:
|
|
|
|
|
|
return False
|
|
|
|
|
|
- def _get_reference_doc(self, output_dir: Path) -> str:
|
|
|
+ def _get_reference_doc(self) -> str:
|
|
|
"""Get path to reference document with specified font"""
|
|
|
- reference_doc = output_dir / f"{self.font_name.replace(' ', '_')}.docx"
|
|
|
+ reference_doc = Path(self._temp_dir.name) / f"{self.font_name.replace(' ', '_')}.docx"
|
|
|
|
|
|
if not reference_doc.exists():
|
|
|
self._create_reference_doc(reference_doc)
|