Mobileread
PrincePDF: PDF export
#1  Doitsu 06-07-2016, 03:59 AM
PrincePDF: export epubs as .pdf files
(based on prince xml)

Current Version: "0.3.0"

This plugin is a very simple prince PDF output wrapper, which allows you to export the currently loaded epub as a .pdf file.

This plugin does not support non-standard epubs. Select Tools > Restructure Epub to Sigil Norm before running this plugin with Sigil 1.0 and higher.

Credits: This plugin was inspired by Jellby's Calibre prince plugin. Jellby was also extremely helpful in tracking down a Windows prince issue and provided other helpful pointers. If you encounter problems with my plugin I strongly recommend that you give Jellby's more polished version a try, which also comes with a nice GUI.

System requirements

If you're using an older Sigil version, you'll need to install a Python 3.4.x interpreter (the plugin won't work with Python 2.7.x) and select its path in the Manage Plugins dialog box. You'll obviously also need to install prince, which can't be bundled with the plugin for licensing reasons. (Make sure to install prince in the default location.)
Note that prince will add a tiny watermark in the upper right corner of the first page. However, it can be easily deleted with Acrobat Reader.

Installation

1. Select Manage Plugins from the Plugins menu. In the Manage Plugins dialog box, select Use Bundled Python, if it isn't already selected. (If your Sigil version doesn't have a Use Bundled Python option, click the Python 3.4 button to detect the path or Set to manually select the Python interpreter path.)
2. Click Add Plugin and select PrincePDF_v0.3.0.zip. This will install the plugin, which you can select via Plugins > output > PrincePDF.

Preferences

This plugin doesn't come with a GUI, but you can change several settings via plugin preference settings. (All of these settings need to be terminated with a comma unless it's the last line in the .json file.)

1. There's a skeleton style.css file in the plugin folder that you can use to customize the pdf output. If you want to use it, update style.css as needed and add the following line to PrincePDF.json:

Code
 "style": true,
2. By default the plugin will copy the pdf file to the user's desktop, but you can define a different folder using the following line:

Code
 "output_dir": "C:\\Users\\User\\Desktop",
Note that in Windows paths you'll need to have to write the backslash twice.

3. You can also define the following values: media, page_size, page_margin, no_author_style and no_default_style, which set the corresponding prince command line values.

For example, the following entry will change the page size to A4:

Code
 "page_size": "A4",
(Note that style, no_author_style and no_default_style can only have the Boolean values true and false, without quotation marks.) For more information on the above settings, see the Prince website.

Postprocessing with cpdf

If you have cpdf installed, you can reduce the size of the .pdf file generated by Prince with cpdf. (Depending on the epub source files, this'll reduce the file size by up to 10%.)

This option is disabled by default. To enable it, change the following entry in PrincePDF.json:

Code
 "cpdf": true,
(If this entry is the last entry in PrincePDF.json, remove the trailing comma.)

You'll also need to download the cpdf Community Release binaries and copy the binary file to a system folder, for example C:\Windows.

License: GNU General Public License v3 (GPL-3)
[zip] PrincePDF_v0.3.0.zip (7.5 KB, 760 views)
Reply 

#2  KevinH 06-07-2016, 01:06 PM
Hi Doitsu,

Wow you have been busy. I agree with Kovid that if given a preference between fixed layout format epubs and pdf, I would choose pdf. So it is nice to have something like this so save people a few steps.

I will add it to the Plugin Index.

Thanks!
Reply 

#3  Auramazda 06-27-2016, 08:17 PM
Hi, great plug-in it work perfectly. I normally use calibre to convert epub to pdf so I was very happy to use Sigil also for this conversion, I already use the great kindlegen plugin for mobi and azw3. So I tried PrincePDF on various book and it work fine but, I am amazed to say this, I think that the calibre pdf are better than the prince pdf.
The prince pdf:
have good margin of the page;
the hyperlink between page work.
On the cons side:
the font preset is times new roman, but I use it normally so it's not really a problem;
If the image is more large than the page they don't got risize;
I also have some problem with little immage;
the TAB space don't get recognized;

I will still try it with more book but first I want to ask two question:
1 - How set the dimension of the font in the style.css for h1, h2,...?
2 - How can change font if I need?
Also a style.css example with more indication will be usefull

The plug-in is great but the program princepdf is only 7/10
Reply 

#4  Doitsu 06-28-2016, 02:16 AM
Quote Auramazda
the TAB space don't get recognized;
Tabs are ignored in HTML, uses paragraph styles instead.

E.g.

Code
p { margin-top: .25em; margin-bottom: .25em; text-indent: 1.25em; -epub-hyphens: auto; -webkit-hyphens: auto; -moz-hyphens: auto; hyphens: auto; orphans: 2; widows: 2;
}
Quote Auramazda
1 - How set the dimension of the font in the style.css for h1, h2,...?
Like this:

Code
h1 { font-size: 120%;
}
h2 { font-size: 100%;
}
Quote Auramazda
2 - How can change font if I need?
Simply add a font-family declaration. E.g.
Code
body { font-family: DejaVuLGCSerif;
}
Quote Auramazda
Also a style.css example with more indication will be usefull.
Check out Jelllby's version of the prince plugin; it comes with a nice example CSS file.
Also have a look at a CSS tutorial.

Quote Auramazda
The plug-in is great but the program princepdf is only 7/10
Actually, the plugin doesn't do anything special, it only calls the prince tool. I.e., all the work is done by prince.
Reply 

#5  roger64 09-10-2016, 02:37 AM
Hi

Allowing two display sizes?

This PDF plugin is a great tool. I frequently use it to check quickly my EPUB display (after conversion). Also one can find sometimes complex EPUBs which may trigger display problems with Koreader. Then Prince PDF is always at hand to provide me quickly with a perfectly readable ebook.

It has an advantage over its Calibre plugin counterpart: we can launch it directly from Sigil without having to register the source EPUB in any database.

However, at that time, we can only launch the conversion process with only one fixed display size. The Calibre plugin allows us to choose between two display sizes.

Would it be possible to obtain the same functionality?

To comment further on it without knowing if it's feasable (forgive me), I can think of an opening screen offering to the user a choice between two display sizes (one being default) or of two distinct versions of the same plugin bearing different names and allowing each the launch of a different size.
Reply 

#6  Doitsu 09-10-2016, 05:44 AM
Since the PrincePDF plugin isn't that popular, I'd rather not spend time adding new features.

Quote roger64
I can think of [...] two distinct versions of the same plugin bearing different names and allowing each the launch of a different size.
You can easily create multiple versions of the Plugin with different output sizes:

0. Close Sigil.
1. Locate the Sigil plugins folder.
2. Copy the PrincePDF folder and paste it to the same folder.
3. Rename PrincePDF (copy 1) to PrincePDF2.
4. Open plugin.xml and edit the following line:
<name>PrincePDF2</name>
and save plugin.xml.
5. Copy and rename the plugin preferences folder to PrincePDF2 and change the output size as needed.
6. Restart Sigil. You should see an additional PrincePDF2 output plugin option.
Reply 

#7  roger64 09-10-2016, 06:06 AM
At least for me, your Prince PDF plugin is of nearly daily use. People don't know what they are missing.

Anyway, thank you for this explanation. It will be OK. I'll do it and report back.

Edit: yours is a five minutes solution. Working!
Reply 

#8  samirahmed007 05-03-2017, 01:26 AM
Hi Doitsu,

PrincePDF Plugins dose not work and seen error bellow:

Status: failed

Traceback (most recent call last):
File "C:\Program Files\Sigil\plugin_launchers\python\launcher.py", line 134, in launch
target_script = __import__(script_module)
File "C:\Users\user\AppData\Local\sigil-ebook\sigil\plugins\PrincePDF\plugin.py", line 29, in <module>
prince_path = os.path.join(os.getenv('programfiles(x86)'), 'Prince', 'engine', 'bin', 'prince.exe')
File "ntpath.py", line 113, in join
File "genericpath.py", line 143, in _check_arg_types
TypeError: join() argument must be str or bytes, not 'NoneType'
Error: join() argument must be str or bytes, not 'NoneType'

-----------------------------------------------------------------
All System requirements install my system but PrincePDF Plugin not work Plugin Status:Failed

Please suggest how to solve this problem
Reply 

#9  Doitsu 05-03-2017, 02:20 AM
Quote samirahmed007
PrincePDF Plugins dose not work properly and it seen error bellow
It looks like Python can't find the environment variable that points to 'C:\Program Files (x86)'. This might happen if you're using a very old Windows version or didn't install Prince in the default folder.

1. What's your Windows version?

2. Did you install the Prince executable in the default folder:

Code
C:\Program Files (x86)\Prince
If not, what folder is the Prince executable located in?
Reply 

#10  samirahmed007 05-03-2017, 03:46 AM
Quote Doitsu
It looks like Python can't find the environment variable that points to 'C:\Program Files (x86)'. This might happen if you're using a very old Windows version or didn't install Prince in the default folder.

1. What's your Windows version?

2. Did you install the Prince executable in the default folder:

Code
C:\Program Files (x86)\Prince
If not, what folder is the Prince executable located in?
-----------------------------------------------------
Hi Doitsu
1. My windows version is Windows 7 Professional
and
2. Prince executable folder:
C:\Program Files\Prince\prince-gui.exe
3. C:\Python34\python.exe
image »
PrincePdf_Plugin.png 
Reply 

  Next »  Last »  (1/3)
Today's Posts | Search this Thread | Login | Register