View Issue Details

IDProjectCategoryView StatusLast Update
0015396ScribusUser Interfacepublic2026-08-27 15:10
Reporterale Assigned To 
PrioritynormalSeverityminorReproducibilityN/A
Status newResolutionopen 
Product Version1.5.5.svn 
Summary0015396: file > create pdf
Descriptioncurrently, the creation of the pdf is "hidden" in `file > export > save as pdf`.
mixed with 5 other "low quality" export options.

the goal of scribus is to create PDFs, so i would suggest that the command should be promoted as a main menu entry in "file".

- moving it up, would clearly show that there is a difference between the pdf creation and all other exports.
- moving it close to "print" (before it!) could show some users that the "right" way to print a scribus is file is by first creating a PDF file.
- naming it "create" instead of export / save, would tell the user that PDF is not a good interchange format, but a final file to be printed.
Tags#patch_is_ready, #please_test
PatchNo

Activities

qirat

2026-08-27 07:55

reporter   ~0054327

I liked the idea and it was a small fix.

PDF creation is buried under File > Export alongside secondary export formats, despite PDF being Scribus's primary finished-output workflow.

#Patch behaviour
- Moves Create PDF... to the main File menu, immediately before Print.
- Removes PDF from the Export submenu.
- Renames user-facing Save as PDF wording to Create PDF.
- Changes the PDF dialog title to Create PDF.
- Changes the primary dialog button to Create.
- Updates Preferences > Keyboard Shortcuts / action search to show Create PDF....
- Keeps the existing Ctrl+Shift+P shortcut, PDF icon, and toolbar button.
- Tightens related tooltips and messages for consistent terminology.

#Scope
UI and workflow terminology only. PDF generation, Preflight, and document behaviour are unchanged.

#Files touched
- scribus/actionmanager.cpp
- scribus/scribus.cpp
- scribus/ui/pdfexportdialog.cpp
create-pdf-menu-v1.0.patch (9,105 bytes)   
Index: scribus/actionmanager.cpp
===================================================================
--- scribus/actionmanager.cpp	(revision 27785)
+++ scribus/actionmanager.cpp	(working copy)
@@ -148,8 +148,6 @@
 	scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
 	name = "fileExportAsEPS";
 	scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
-	name = "fileExportAsPDF";
-	scrActions->insert(name, new ScrAction("pref-pdf-export", "pref-pdf-export", "", defaultKey(name), mainWindow));
 	//Rest of File Menu
 //	name = "fileDocSetup";
 //	scrActions->insert(name, new ScrAction("document-properties", "document-properties", "", defaultKey(name), mainWindow));
@@ -161,6 +159,8 @@
 	name = "filePreferences150";
 	scrActions->insert(name, new ScrAction("", defaultKey(name), mainWindow));
 	(*scrActions)[name]->setMenuRole(QAction::PreferencesRole);
+	name = "fileExportAsPDF";
+	scrActions->insert(name, new ScrAction("pref-pdf-export", "pref-pdf-export", "", defaultKey(name), mainWindow));
 	name = "filePrint";
 	scrActions->insert(name, new ScrAction("document-print", "document-print", "", defaultKey(name), mainWindow));
 	name = "PrintPreview";
@@ -187,6 +187,7 @@
 	connect( (*scrActions)["fileSaveAs"], SIGNAL(triggered()), mainWindow, SLOT(slotFileSaveAs()) );
 	connect( (*scrActions)["fileDocSetup150"], SIGNAL(triggered()), mainWindow, SLOT(slotDocSetup()) );
 	connect( (*scrActions)["filePreferences150"], SIGNAL(triggered()), mainWindow, SLOT(slotPrefsOrg()) );
+	connect( (*scrActions)["fileExportAsPDF"], SIGNAL(triggered()), mainWindow, SLOT(SaveAsPDF()) );
 	connect( (*scrActions)["fileRevert"], SIGNAL(triggered()), mainWindow, SLOT(slotFileRevert()) );
 	connect( (*scrActions)["fileCollect"], SIGNAL(triggered()), mainWindow, SLOT(fileCollect()) );
 	connect( (*scrActions)["fileQuit"], SIGNAL(triggered()), mainWindow, SLOT(slotFileQuit()) );
@@ -199,7 +200,6 @@
 	//File Export Menu
 	connect( (*scrActions)["fileExportText"], SIGNAL(triggered()), mainWindow, SLOT(SaveText()) );
 	connect( (*scrActions)["fileExportAsEPS"], SIGNAL(triggered()), mainWindow, SLOT(SaveAsEps()) );
-	connect( (*scrActions)["fileExportAsPDF"], SIGNAL(triggered()), mainWindow, SLOT(SaveAsPDF()) );
 	//The rest are plugins
 	
 	
@@ -1578,7 +1578,7 @@
 
 	(*scrActions)["fileExportText"]->setTexts( tr("Save &Text..."));
 	(*scrActions)["fileExportAsEPS"]->setTexts( tr("Save as &EPS..."));
-	(*scrActions)["fileExportAsPDF"]->setTexts( tr("Save as P&DF..."));
+	(*scrActions)["fileExportAsPDF"]->setTexts( tr("Create P&DF..."));
 //	(*scrActions)["fileDocSetup"]->setTexts( tr("Document &Setup (old)..."));
 	(*scrActions)["fileDocSetup150"]->setTexts( tr("Document &Setup..."));
 //	(*scrActions)["filePreferences"]->setTexts( tr("P&references (old)..."));
@@ -1879,7 +1879,7 @@
 	(*scrActions)["editRedoAction"]->setStatusTextAndShortcut( tr("Redo"));
 	(*scrActions)["editUndoAction"]->setStatusTextAndShortcut( tr("Undo"));
 	(*scrActions)["fileClose"]->setStatusTextAndShortcut( tr("Close the current document"));
-	(*scrActions)["fileExportAsPDF"]->setStatusTextAndShortcut( tr("Export the document to PDF"));
+	(*scrActions)["fileExportAsPDF"]->setStatusTextAndShortcut( tr("Create a PDF from the document"));
 	(*scrActions)["fileNew"]->setStatusTextAndShortcut( tr("Create a new document"));
 	(*scrActions)["fileOpen"]->setStatusTextAndShortcut( tr("Open an existing document"));
 	(*scrActions)["filePrint"]->setStatusTextAndShortcut( tr("Print the document"));
@@ -2181,11 +2181,11 @@
 		<< "fileImportVector"
 		<< "fileExportText"
 		<< "fileExportAsEPS"
-		<< "fileExportAsPDF"
 //		<< "fileDocSetup"
 		<< "fileDocSetup150"
 //		<< "filePreferences"
 		<< "filePreferences150"
+		<< "fileExportAsPDF"
 		<< "filePrint"
 		<< "PrintPreview"
 		<< "OutputPreviewPDF"
Index: scribus/scribus.cpp
===================================================================
--- scribus/scribus.cpp	(revision 27785)
+++ scribus/scribus.cpp	(working copy)
@@ -943,11 +943,11 @@
 	scrMenuMgr->createMenu("FileExport", tr("&Export"), "File");
 	scrMenuMgr->addMenuItemString("fileExportText", "FileExport");
 	scrMenuMgr->addMenuItemString("fileExportAsEPS", "FileExport");
-	scrMenuMgr->addMenuItemString("fileExportAsPDF", "FileExport");
 	scrMenuMgr->addMenuItemString("SEPARATOR", "File");
 	scrMenuMgr->addMenuItemString("fileDocSetup150", "File");
 	scrMenuMgr->addMenuItemString("filePreferences150", "File");
 	scrMenuMgr->addMenuItemString("SEPARATOR", "File");
+	scrMenuMgr->addMenuItemString("fileExportAsPDF", "File");
 	scrMenuMgr->addMenuItemString("filePrint", "File");
 	if (ScCore->haveGS() || ScCore->isWinGUI())
 		scrMenuMgr->addMenuItemString("PrintPreview", "File");
Index: scribus/ui/pdfexportdialog.cpp
===================================================================
--- scribus/ui/pdfexportdialog.cpp	(revision 27785)
+++ scribus/ui/pdfexportdialog.cpp	(working copy)
@@ -58,7 +58,7 @@
 	m_printerProfiles(printerProfiles)
 {
 	setModal(true);
-	setWindowTitle( tr( "Save as PDF" ) );
+	setWindowTitle( tr( "Create PDF" ) );
 	setWindowIcon(IconManager::instance().loadIcon("app-icon"));
 	PDFExportLayout = new QVBoxLayout( this );
 	PDFExportLayout->setSpacing(6);
@@ -101,10 +101,10 @@
 	changeButton->setText( tr( "Cha&nge..." ) );
 	changeButton->setMinimumSize( QSize( 88, 24 ) );
 	NameLayout->addWidget( changeButton, 0, 1 );
-	multiFile = new QCheckBox( tr( "Output one file for eac&h page" ), Name );
+	multiFile = new QCheckBox( tr( "Create one PDF file for eac&h page" ), Name );
 	multiFile->setChecked(m_opts.doMultiFile);
 	NameLayout->addWidget( multiFile, 1, 0 );
-	openAfterExportCheckBox = new QCheckBox( tr( "Open PDF after Export" ), Name );
+	openAfterExportCheckBox = new QCheckBox( tr( "Open PDF after creation" ), Name );
 	openAfterExportCheckBox->setChecked(m_opts.openAfterExport);
 	NameLayout->addWidget( openAfterExportCheckBox, 2, 0 );
 	PDFExportLayout->addWidget( Name );
@@ -116,7 +116,7 @@
 	Layout7->setContentsMargins(0, 0, 0, 0);
 	QSpacerItem* spacer_2 = new QSpacerItem( 2, 2, QSizePolicy::Expanding, QSizePolicy::Minimum );
 	Layout7->addItem( spacer_2 );
-	okButton = new QPushButton( tr( "&Save" ), this );
+	okButton = new QPushButton( tr( "C&reate" ), this );
 	okButton->setAutoDefault( true );
 	okButton->setDefault( true );
 	Layout7->addWidget( okButton );
@@ -128,9 +128,9 @@
 	resize(sizeHint());
 //	setMaximumSize( sizeHint() );
 //tooltips
-	multiFile->setToolTip( "<qt>" + tr( "This enables exporting one individually named PDF file for each page in the document. Page numbers are added automatically. This is most useful for imposing PDF for commercial printing.") + "</qt>" );
-	openAfterExportCheckBox->setToolTip( "<qt>" + tr( "Open the exported PDF with the PDF viewer as set in External Tools preferences, when not exporting to a multi-file export destination") + "</qt>" );
-	okButton->setToolTip( "<qt>" + tr( "The save button will be disabled if you are trying to export PDF/X and the info string is missing from the PDF/X tab") + "</qt>" );
+	multiFile->setToolTip( "<qt>" + tr( "Create a separate PDF file for each page. Page numbers are added automatically. This is useful for PDF imposition in commercial printing.") + "</qt>" );
+	openAfterExportCheckBox->setToolTip( "<qt>" + tr( "Open the created PDF in the PDF viewer configured in External Tools preferences when creating a single PDF file.") + "</qt>" );
+	okButton->setToolTip( "<qt>" + tr( "Create is disabled for PDF/X until the required Info String is entered on the PDF/X tab.") + "</qt>" );
 	// signals and slots connections
 	connect( changeButton, SIGNAL( clicked() ), this, SLOT( ChangeFile() ) );
 	connect( okButton, SIGNAL( clicked() ), this, SLOT( DoExport() ) );
@@ -170,7 +170,7 @@
 
 	if ((pageNumbers.empty()) || hasInvalidPageRange)
 	{
-		ScMessageBox::warning(this, CommonStrings::trWarning, tr("The range of pages to export is invalid.\nPlease check it and try again."));
+		ScMessageBox::warning(this, CommonStrings::trWarning, tr("The page range is invalid.\nPlease check it and try again."));
 		return;
 	}
 
@@ -181,8 +181,8 @@
 	QString dirPath = QDir::toNativeSeparators(fi.absolutePath());
 	if (!QFile::exists(fi.absolutePath()))
 	{
-		if (ScMessageBox::question(this, tr( "Save as PDF" ),
-									tr("%1 does not exists and will be created, continue?").arg(dirPath),
+		if (ScMessageBox::question(this, tr( "Create PDF" ),
+									tr("%1 does not exist. Create it?").arg(dirPath),
 									QMessageBox::Ok | QMessageBox::Cancel,
 									QMessageBox::NoButton,	// GUI default
 									QMessageBox::Ok)	// batch default
@@ -241,7 +241,7 @@
 			wdir = wfile;
 	}
 
-	QString d = QFileDialog::getSaveFileName(this, tr("Save As"), wdir, tr("PDF Files (*.pdf);;All Files (*)"), nullptr, QFileDialog::DontConfirmOverwrite);
+	QString d = QFileDialog::getSaveFileName(this, tr("Choose PDF File"), wdir, tr("PDF Files (*.pdf);;All Files (*)"), nullptr, QFileDialog::DontConfirmOverwrite);
 	if (d.length() > 0)
 	{
 		QString fn(QDir::fromNativeSeparators(d));
create-pdf-menu-v1.0.patch (9,105 bytes)   

qirat

2026-08-27 09:06

reporter   ~0054331

promote-create-pdf-file-menu.png (131,012 bytes)   
promote-create-pdf-file-menu.png (131,012 bytes)   

ale

2026-08-27 09:29

manager   ~0054334

I like the screenshot.

The patch looks good.

utnik

2026-08-27 14:24

updater   ~0054343

why did you change the shortcut from ‚ctrl + shift + p‘ to ‚ctrl + shift + x‘ ?

ale

2026-08-27 14:28

manager   ~0054344

The shortcut is only their local configuration.
I also had to ask in the chat : - )

qirat

2026-08-27 15:10

reporter   ~0054345

I confirm, it is my own, local preference. No shortcuts touched in the patch.

Issue History

Date Modified Username Field Change
2018-08-09 09:53 ale New Issue
2026-08-27 07:55 qirat Note Added: 0054327
2026-08-27 07:55 qirat File Added: create-pdf-menu-v1.0.patch
2026-08-27 07:56 qirat Tag Attached: #please_test
2026-08-27 09:06 qirat Note Added: 0054331
2026-08-27 09:06 qirat File Added: promote-create-pdf-file-menu.png
2026-08-27 09:21 ale Tag Attached: #patch_is_ready
2026-08-27 09:29 ale Note Added: 0054334
2026-08-27 14:24 utnik Note Added: 0054343
2026-08-27 14:28 ale Note Added: 0054344
2026-08-27 15:10 qirat Note Added: 0054345