View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update | 
|---|---|---|---|---|---|
| 0015017 | Scribus | Scripter | public | 2017-10-12 11:41 | 2017-12-20 20:58 | 
| Reporter | william | Assigned To | gpittman | ||
| Priority | normal | Severity | minor | Reproducibility | always | 
| Status | closed | Resolution | fixed | ||
| Product Version | 1.5.4.svn | ||||
| Fixed in Version | 1.5.4.svn | ||||
| Summary | 0015017: Use the FontEmbedding setting from the document in the scripter PDFfile | ||||
| Description | Juraj Fedel contributed this patch to implement a feature recently requested on the Scribus mailing list. The scripter PDFfile class currently initializes the fontEmbedding property to 0 to embed fonts. With this patch, fontEmbedding is initialized to the setting from the document.  | ||||
| Steps To Reproduce | Make a script to write a document using PDFfile (or use the example uploaded to this patch). Create and save a document with a few lines of text (or use the example uploaded to this patch). Run the script, for example, with scribus -g -py export_to_pdf.py -file 'test.pdf' -- testdoc.sla Use a tool like poppler pdffonts or gs ps2ascii to check that the fonts are embedded. Open the document, change the font embedding, for example, File -> Export -> Save as PDF -> [Fonts] tab -> change Embedding Mode from "Embed or Subset" to "Outline All Fonts" -> [Save], and then save the document. Run the script. Check that the fonts are vectorized. poppler pdffonts should not report any fonts, and gs ps2ascii should not find any text.  | ||||
| Tags | No tags attached. | ||||
| Attached Files |  0001-Use-FontEmbeding-setting-from-document.patch (923 bytes)   
 
From 486e69a2705beea6518c76868b12987003ab8b17 Mon Sep 17 00:00:00 2001
From: Juraj Fedel <wtxnh-scribus@yahoo.com.au>
Date: Thu, 12 Oct 2017 11:22:33 +0200
Subject: [PATCH] Use FontEmbeding setting from document
---
 scribus/plugins/scriptplugin/objpdffile.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/scribus/plugins/scriptplugin/objpdffile.cpp b/scribus/plugins/scriptplugin/objpdffile.cpp
index 835b077ea..3552ed225 100644
--- a/scribus/plugins/scriptplugin/objpdffile.cpp
+++ b/scribus/plugins/scriptplugin/objpdffile.cpp
@@ -349,7 +349,7 @@ static int PDFfile_init(PDFfile *self, PyObject * /*args*/, PyObject * /*kwds*/)
 	}
 // font embedding mode
 	PyObject *embeddingMode = NULL;
-	embeddingMode = PyInt_FromLong(0);
+	embeddingMode = PyInt_FromLong(pdfOptions.FontEmbedding);
 	if (embeddingMode){
 		Py_DECREF(self->fontEmbedding);
 		self->fontEmbedding = embeddingMode;
-- 
2.14.2
 export_to_pdf.py (1,705 bytes)   
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
""" 
Convert a document to a PDF
Run with a command like
        scribus -g -py export_to_pdf.py -version 13 -useDocBleeds 0 -bleedr 2 -compress 1 -info 'test title' -file 'test.pdf' -pages '[1, 2]' -- testdoc.sla
You can set any "pdf" attribute with "-attribute value".
Tested with scribus 1.5.2.svn r21147
Author: William Bader, Director of Research and Development, SCS, http://www.newspapersystems.com
15Sep15 wb		initial version
31Mar16 Jural Fedel	simplified, added support for page ranges
"""
import scribus
import sys
import ast
def main(argv):
        pdf = scribus.PDFfile()
        i = 1
        while i < len(argv):
                if (argv[i][0] != '-'):
                        raise Exception("PDF option expected instead of: '{0}'".format(argv[i]))
                name = argv[i][1:]
                pdf_attr = getattr(pdf, name)
                i = i + 1
                try:
                        value = argv[i]
                except:
                        msg = "Option '{0}' require value".format(name)
                        raise Exception(msg)
                if isinstance(pdf_attr, basestring):
                        setattr(pdf, name, value)
                else:
                        val = None
                        try:
                                val = ast.literal_eval(value)
                        except:
                                msg = "'{0}' =/= '{1}'".format(name, value)
                                raise ValueError(msg)
                        setattr(pdf, name, val)
                i = i + 1
        pdf.save()
# start the script
if __name__ == '__main__':
        main(sys.argv)
 | ||||
| Patch | Yes | ||||
| Date Modified | Username | Field | Change | 
|---|---|---|---|
| 2017-10-12 11:41 | william | New Issue | |
| 2017-10-12 11:41 | william | File Added: 0001-Use-FontEmbeding-setting-from-document.patch | |
| 2017-10-12 11:41 | william | File Added: export_to_pdf.py | |
| 2017-10-12 11:41 | william | File Added: testdoc.sla | |
| 2017-10-12 14:32 | gpittman | Note Added: 0044532 | |
| 2017-10-12 14:58 | jghali | Summary | [patch] Use the FontEmbedding setting from the document in the scripter PDFfile => Use the FontEmbedding setting from the document in the scripter PDFfile | 
| 2017-10-12 14:58 | jghali | Assigned To | => gpittman | 
| 2017-10-12 14:58 | jghali | Status | new => resolved | 
| 2017-10-12 14:58 | jghali | Resolution | open => fixed | 
| 2017-10-12 14:58 | jghali | Fixed in Version | => 1.5.4.svn | 
| 2017-12-20 20:58 | cbradney | Status | resolved => closed |