View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0014901 | Scribus | public | 2017-07-08 09:32 | 2026-09-12 13:44 | |
| Reporter | ale | Assigned To | |||
| Priority | normal | Severity | feature | Reproducibility | N/A |
| Status | new | Resolution | open | ||
| Product Version | 1.5.4.svn | ||||
| Summary | 0014901: in pdf export only allow to turn bleeds on and off | ||||
| Description | currently, one can set the bleeds at three places: - preferences - settings - pdf export the last one should be replaced by a simple button that turns bleeds on and off (document is cut at the page margin for screen viewing). this button would only be enabled when bleeds are defined in the document settings. | ||||
| Tags | #easyhack, #please_test | ||||
| Patch | No | ||||
| related to | 0010581 | new | Checkbox to toggle prepress option (last tab of export to PDF dialog) |
|
|
I think simply not allowing to edit bleeds here at all might add a totally avoidable trip to the Doc Setup for such a simple thing. I went with this approach to have three options here. Please test. - Replaces “Use Document Bleeds” with None, Document settings, and Custom modes. - Reuses NewMarginWidget with Scribus’s existing directional icons. - Shows document bleed values read-only while keeping the direction icons visible. - Disables the complete value area for None and enables editing for Custom. - Preserves custom values when switching between modes. - Disables Bleed Marks when the effective bleed is zero. - Keeps the controls compact and left-aligned. - Uses one shared function to store the selected bleed mode and values, avoiding duplicated dialog logic. pdf-bleed-area-selection-v1.02.patch (19,414 bytes)
Index: scribus/ui/newmarginwidget.cpp
===================================================================
--- scribus/ui/newmarginwidget.cpp (revision 27829)
+++ scribus/ui/newmarginwidget.cpp (working copy)
@@ -163,6 +163,17 @@
setInternalState(m_pageWidth, m_pageHeight, margs, m_savedPresetItem);
}
+void NewMarginWidget::setControlsEnabled(bool enabled)
+{
+ leftMarginSpinBox->setEnabled(enabled);
+ rightMarginSpinBox->setEnabled(enabled);
+ topMarginSpinBox->setEnabled(enabled);
+ bottomMarginSpinBox->setEnabled(enabled);
+ marginLinkButton->setEnabled(enabled);
+ presetLayoutComboBox->setEnabled(enabled);
+ printerMarginsPushButton->setEnabled(enabled);
+}
+
void NewMarginWidget::setNewUnit(int unitIndex)
{
m_unitIndex = unitIndex;
Index: scribus/ui/newmarginwidget.h
===================================================================
--- scribus/ui/newmarginwidget.h (revision 27829)
+++ scribus/ui/newmarginwidget.h (working copy)
@@ -37,6 +37,7 @@
void setPageHeight(double height);
void setNewUnit(int unitIndex);
void setNewValues(const MarginStruct& margs);
+ void setControlsEnabled(bool enabled);
/*! \brief Setup the presetCombo without changing the margin values */
void setMarginPreset(int p);
Index: scribus/ui/pdfexportdialog.cpp
===================================================================
--- scribus/ui/pdfexportdialog.cpp (revision 27829)
+++ scribus/ui/pdfexportdialog.cpp (working copy)
@@ -301,18 +301,10 @@
m_opts.hideMenuBar = Options->hideMenuBar->isChecked();
m_opts.hideToolBar = Options->hideToolBar->isChecked();
m_opts.fitWindow = Options->fitWindow->isChecked();
- m_opts.useDocBleeds = Options->docBleeds->isChecked();
- if (!Options->docBleeds->isChecked())
- {
- m_opts.bleeds.setTop(Options->bleedTopSpinBox->value() / m_unitRatio);
- m_opts.bleeds.setLeft(Options->bleedLeftSpinBox->value() / m_unitRatio);
- m_opts.bleeds.setRight(Options->bleedRightSpinBox->value() / m_unitRatio);
- m_opts.bleeds.setBottom(Options->bleedBottomSpinBox->value()/ m_unitRatio);
- }
+ Options->storeBleedValues(m_opts);
m_opts.markLength = Options->markLength->value() / m_unitRatio;
m_opts.markOffset = Options->markOffset->value() / m_unitRatio;
m_opts.cropMarks = Options->cropMarks->isChecked();
- m_opts.bleedMarks = Options->bleedMarks->isChecked();
m_opts.registrationMarks = Options->registrationMarks->isChecked();
m_opts.colorMarks = Options->colorMarks->isChecked();
m_opts.docInfoMarks = Options->docInfoMarks->isChecked();
Index: scribus/ui/tabpdfoptions.cpp
===================================================================
--- scribus/ui/tabpdfoptions.cpp (revision 27829)
+++ scribus/ui/tabpdfoptions.cpp (working copy)
@@ -34,6 +34,8 @@
#include <QToolButton>
#include <QVBoxLayout>
+#include "ui/newmarginwidget.h"
+
#include "colormgmt/sccolormgmtstructs.h"
#include "iconmanager.h"
#include "pageitemiterator.h"
@@ -139,22 +141,10 @@
markOffset->setMaximum(3000 * unitRatio);
bleedGroupLayout->setAlignment( Qt::AlignTop );
-
- bleedTopSpinBox->setNewUnit(m_Doc->unitIndex());
- bleedTopSpinBox->setMinimum(0);
- bleedTopSpinBox->setMaximum(3000 * unitRatio);
-
- bleedBottomSpinBox->setNewUnit(m_Doc->unitIndex());
- bleedBottomSpinBox->setMinimum(0);
- bleedBottomSpinBox->setMaximum(3000 * unitRatio);
-
- bleedLeftSpinBox->setNewUnit(m_Doc->unitIndex());
- bleedLeftSpinBox->setMinimum(0);
- bleedLeftSpinBox->setMaximum(3000 * unitRatio);
-
- bleedRightSpinBox->setNewUnit(m_Doc->unitIndex());
- bleedRightSpinBox->setMinimum(0);
- bleedRightSpinBox->setMaximum(3000 * unitRatio);
+ bleedsWidget->setup(Optionen.bleeds, m_Doc->pagePositioning(), m_Doc->unitIndex(), NewMarginWidget::BleedWidgetFlags);
+ bleedsWidget->setPageWidth(m_Doc->pageWidth());
+ bleedsWidget->setPageHeight(m_Doc->pageHeight());
+ bleedsWidget->toggleLabelVisibility(false);
X3GroupLayout->setAlignment( Qt::AlignTop );
@@ -175,7 +165,10 @@
connect(EonAllPg, SIGNAL(clicked()), this, SLOT(EffectOnAll()));
connect(InfoString, SIGNAL(textChanged(QString)), this, SLOT(checkInfo()));
connect(InfoString, SIGNAL(editingFinished()), this, SLOT(checkInfo()));
+ connect(noBleeds, SIGNAL(clicked()), this, SLOT(doDocBleeds()));
connect(docBleeds, SIGNAL(clicked()), this, SLOT(doDocBleeds()));
+ connect(customBleeds, SIGNAL(clicked()), this, SLOT(doDocBleeds()));
+ connect(bleedsWidget, SIGNAL(valuesChanged(MarginStruct)), this, SLOT(updateBleedMarksAvailability()));
connect(AllPages, SIGNAL(toggled(bool)), this, SLOT(SelRange(bool)));
connect(pageNrButton, SIGNAL(clicked()), this, SLOT(createPageNumberRange()));
@@ -270,17 +263,15 @@
// Tooltips : PrePress tab
cropMarks->setToolTip( "<qt>" + tr( "Creates crop marks in the PDF indicating where the paper should be cut or trimmed after printing" ) + "</qt>" );
- bleedMarks->setToolTip( "<qt>" + tr( "This creates bleed marks which are indicated by _ . _ and show the bleed limit" ) + "</qt>" );
+ bleedMarks->setToolTip( "<qt>" + tr( "Add marks indicating the edge of the exported bleed area." ) + "</qt>" );
registrationMarks->setToolTip( "<qt>" + tr( "Add registration marks to each separation" ) + "</qt>" );
colorMarks->setToolTip( "<qt>" + tr( "Add color calibration bars" ) + "</qt>" );
docInfoMarks->setToolTip( "<qt>" + tr( "Add document information which includes the document title and page numbers" ) + "</qt>" );
markLength->setToolTip( "<qt>" + tr( "Indicate the size of crop marks" ) + "</qt>" );
markOffset->setToolTip( "<qt>" + tr( "Indicate the distance offset for the registration marks" ) + "</qt>" );
- bleedTopSpinBox->setToolTip( "<qt>" + tr( "Distance for bleed from the top of the physical page" ) + "</qt>" );
- bleedBottomSpinBox->setToolTip( "<qt>" + tr( "Distance for bleed from the bottom of the physical page" ) + "</qt>" );
- bleedLeftSpinBox->setToolTip( "<qt>" + tr( "Distance for bleed from the left of the physical page" ) + "</qt>" );
- bleedRightSpinBox->setToolTip( "<qt>" + tr( "Distance for bleed from the right of the physical page" ) + "</qt>");
- docBleeds->setToolTip( "<qt>" + tr( "Use the existing bleed settings from the document preferences" ) + "</qt>" );
+ noBleeds->setToolTip( "<qt>" + tr( "Exclude the bleed area from the PDF. Printer marks may still extend beyond the page." ) + "</qt>" );
+ docBleeds->setToolTip( "<qt>" + tr( "Use the bleed values defined in Document Setup." ) + "</qt>" );
+ customBleeds->setToolTip( "<qt>" + tr( "Override the document bleed values for this PDF." ) + "</qt>" );
PrintProfC->setToolTip( "<qt>" + tr( "Output profile for printing. If possible, get some guidance from your printer on profile selection." ) + "</qt>" );
InfoString->setToolTip( "<qt>" + tr( "Mandatory string for PDF/X or the PDF will fail PDF/X conformance. We recommend you use the title of the document." ) + "</qt>" );
}
@@ -579,20 +570,31 @@
InfoString->setText(fi.fileName());
}
- bleedTopSpinBox->setValue(Opts.bleeds.top()*unitRatio);
- bleedBottomSpinBox->setValue(Opts.bleeds.bottom()*unitRatio);
- bleedRightSpinBox->setValue(Opts.bleeds.right()*unitRatio);
- bleedLeftSpinBox->setValue(Opts.bleeds.left()*unitRatio);
- docBleeds->setChecked(Opts.useDocBleeds);
- doDocBleeds();
-
markLength->setValue(Opts.markLength*unitRatio);
markOffset->setValue(Opts.markOffset*unitRatio);
cropMarks->setChecked(Opts.cropMarks);
bleedMarks->setChecked(Opts.bleedMarks);
+ m_bleedMarksRequested = Opts.bleedMarks;
registrationMarks->setChecked(Opts.registrationMarks);
colorMarks->setChecked(Opts.colorMarks);
docInfoMarks->setChecked(Opts.docInfoMarks);
+
+ m_customBleeds = Opts.bleeds;
+ if (Opts.useDocBleeds)
+ m_bleedMode = BleedMode::Document;
+ else if (Opts.bleeds.isNull())
+ m_bleedMode = BleedMode::None;
+ else
+ m_bleedMode = BleedMode::Custom;
+ {
+ const QSignalBlocker blockNone(noBleeds);
+ const QSignalBlocker blockDocument(docBleeds);
+ const QSignalBlocker blockCustom(customBleeds);
+ noBleeds->setChecked(m_bleedMode == BleedMode::None);
+ docBleeds->setChecked(m_bleedMode == BleedMode::Document);
+ customBleeds->setChecked(m_bleedMode == BleedMode::Custom);
+ }
+ doDocBleeds();
if (!cmsUse)
X3Group->setEnabled(false);
if (cmsUse && (Opts.Version == PDFVersion::PDF_X1a) && (!PDFXProfiles.isEmpty()))
@@ -635,11 +637,6 @@
EDirection_2_2->setCurrentIndex(EffVal[0].Di);
SetEffOpts(EffectType->currentIndex());
}
- if (m_Doc->pagePositioning() != 0)
- {
- bleedLeftLabel->setText( tr( "Inside:" ) );
- bleedRightLabel->setText( tr( "Outside:" ) );
- }
}
void TabPDFOptions::handleCompressionMethod(int ind)
@@ -670,17 +667,12 @@
pdfOptions.UseSpotColors = !useSpot->isChecked();
pdfOptions.doMultiFile = false;
pdfOptions.cropMarks = cropMarks->isChecked();
- pdfOptions.bleedMarks = bleedMarks->isChecked();
pdfOptions.registrationMarks = registrationMarks->isChecked();
pdfOptions.colorMarks = colorMarks->isChecked();
pdfOptions.docInfoMarks = docInfoMarks->isChecked();
pdfOptions.markLength = markLength->value() / unitRatio;
pdfOptions.markOffset = markOffset->value() / unitRatio;
- pdfOptions.useDocBleeds = docBleeds->isChecked();
- pdfOptions.bleeds.setBottom(bleedBottomSpinBox->value() / unitRatio);
- pdfOptions.bleeds.setTop(bleedTopSpinBox->value() / unitRatio);
- pdfOptions.bleeds.setLeft(bleedLeftSpinBox->value() / unitRatio);
- pdfOptions.bleeds.setRight(bleedRightSpinBox->value() / unitRatio);
+ storeBleedValues(pdfOptions);
pdfOptions.doClip = ClipMarg->isChecked();
if (Encry->isChecked())
{
@@ -732,34 +724,76 @@
}
}
+void TabPDFOptions::storeBleedValues(PDFOptions& pdfOptions) const
+{
+ const BleedMode mode = selectedBleedMode();
+ pdfOptions.useDocBleeds = (mode == BleedMode::Document);
+ if (mode == BleedMode::None)
+ pdfOptions.bleeds.resetToZero();
+ else if (mode == BleedMode::Custom)
+ pdfOptions.bleeds = bleedsWidget->margins();
+ else
+ pdfOptions.bleeds = m_customBleeds;
+
+ pdfOptions.bleedMarks = !effectiveBleeds().isNull() && bleedMarks->isChecked();
+}
+
void TabPDFOptions::doDocBleeds()
{
- if (docBleeds->isChecked())
- {
- Opts.bleeds.setTop(bleedTopSpinBox->value() / unitRatio);
- Opts.bleeds.setBottom(bleedBottomSpinBox->value() / unitRatio);
- Opts.bleeds.setRight(bleedRightSpinBox->value() / unitRatio);
- Opts.bleeds.setLeft(bleedLeftSpinBox->value() / unitRatio);
- bleedTopSpinBox->setValue(m_Doc->bleeds()->top()*unitRatio);
- bleedBottomSpinBox->setValue(m_Doc->bleeds()->bottom()*unitRatio);
- bleedRightSpinBox->setValue(m_Doc->bleeds()->right()*unitRatio);
- bleedLeftSpinBox->setValue(m_Doc->bleeds()->left()*unitRatio);
- bleedTopSpinBox->setEnabled(false);
- bleedBottomSpinBox->setEnabled(false);
- bleedRightSpinBox->setEnabled(false);
- bleedLeftSpinBox->setEnabled(false);
+ const BleedMode newMode = selectedBleedMode();
+ if (m_bleedMode == BleedMode::Custom && newMode != BleedMode::Custom)
+ m_customBleeds = bleedsWidget->margins();
+ m_bleedMode = newMode;
+
+ if (newMode == BleedMode::None)
+ {
+ MarginStruct noBleedValues;
+ noBleedValues.resetToZero();
+ bleedsWidget->setNewValues(noBleedValues);
}
+ else if (newMode == BleedMode::Document)
+ bleedsWidget->setNewValues(*m_Doc->bleeds());
else
+ bleedsWidget->setNewValues(m_customBleeds);
+ bleedsWidget->setEnabled(newMode != BleedMode::None);
+ bleedsWidget->setControlsEnabled(newMode == BleedMode::Custom);
+ updateBleedMarksAvailability();
+}
+
+TabPDFOptions::BleedMode TabPDFOptions::selectedBleedMode() const
+{
+ if (noBleeds->isChecked())
+ return BleedMode::None;
+ if (customBleeds->isChecked())
+ return BleedMode::Custom;
+ return BleedMode::Document;
+}
+
+MarginStruct TabPDFOptions::effectiveBleeds() const
+{
+ const BleedMode mode = selectedBleedMode();
+ if (mode == BleedMode::None)
+ {
+ MarginStruct noBleedValues;
+ noBleedValues.resetToZero();
+ return noBleedValues;
+ }
+ if (mode == BleedMode::Document)
+ return *m_Doc->bleeds();
+ return bleedsWidget->margins();
+}
+
+void TabPDFOptions::updateBleedMarksAvailability()
+{
+ const bool hasBleeds = !effectiveBleeds().isNull();
+ if (!hasBleeds && bleedMarks->isEnabled())
{
- bleedTopSpinBox->setValue(Opts.bleeds.top()*unitRatio);
- bleedBottomSpinBox->setValue(Opts.bleeds.bottom()*unitRatio);
- bleedRightSpinBox->setValue(Opts.bleeds.right()*unitRatio);
- bleedLeftSpinBox->setValue(Opts.bleeds.left()*unitRatio);
- bleedTopSpinBox->setEnabled(true);
- bleedBottomSpinBox->setEnabled(true);
- bleedRightSpinBox->setEnabled(true);
- bleedLeftSpinBox->setEnabled(true);
+ m_bleedMarksRequested = bleedMarks->isChecked();
+ bleedMarks->setChecked(false);
}
+ else if (hasBleeds && !bleedMarks->isEnabled())
+ bleedMarks->setChecked(m_bleedMarksRequested);
+ bleedMarks->setEnabled(hasBleeds);
}
void TabPDFOptions::checkInfo()
@@ -1407,10 +1441,7 @@
void TabPDFOptions::unitChange(int docUnitIndex)
{
- bleedBottomSpinBox->setNewUnit(docUnitIndex);
- bleedTopSpinBox->setNewUnit(docUnitIndex);
- bleedRightSpinBox->setNewUnit(docUnitIndex);
- bleedLeftSpinBox->setNewUnit(docUnitIndex);
+ bleedsWidget->setNewUnit(docUnitIndex);
markOffset->setNewUnit(docUnitIndex);
}
Index: scribus/ui/tabpdfoptions.h
===================================================================
--- scribus/ui/tabpdfoptions.h (revision 27829)
+++ scribus/ui/tabpdfoptions.h (working copy)
@@ -29,6 +29,7 @@
#include "bookmwin.h"
#include "colormgmt/sccolormgmtstructs.h"
+#include "margins.h"
#include "scribusapi.h"
#include "ui_tabpdfoptions.h"
@@ -56,6 +57,7 @@
const QMap<QString, int> & DocFonts);
void storeValues(PDFOptions& options) const;
+ void storeBleedValues(PDFOptions& options) const;
void unitChange(int docUnitIndex);
@@ -102,6 +104,7 @@
protected slots:
void createPageNumberRange();
void handleCompressionMethod(int ind);
+ void updateBleedMarksAvailability();
protected:
// PDFExportDialog should really privately inherit from us, but it can't
@@ -117,12 +120,25 @@
void checkEmbeddableFonts();
private:
+ enum class BleedMode
+ {
+ None,
+ Document,
+ Custom
+ };
+
+ BleedMode selectedBleedMode() const;
+ MarginStruct effectiveBleeds() const;
+
// Non-GUI protected members
double unitRatio;
ScribusDoc* const m_Doc;
const SCFonts & AllFonts;
PDFOptions & Opts;
bool cms {false};
+ BleedMode m_bleedMode { BleedMode::Document };
+ MarginStruct m_customBleeds { 0.0, 0.0, 0.0, 0.0 };
+ bool m_bleedMarksRequested { false };
QStringList m_docFonts;
QMap<QString, QString> m_annotationFonts;
Index: scribus/ui/tabpdfoptions.ui
===================================================================
--- scribus/ui/tabpdfoptions.ui (revision 27829)
+++ scribus/ui/tabpdfoptions.ui (working copy)
@@ -1424,55 +1424,66 @@
<item>
<widget class="QGroupBox" name="BleedGroup">
<property name="title">
- <string>Bleed Settings</string>
+ <string>Bleed Area</string>
</property>
- <layout class="QGridLayout" name="bleedGroupLayout">
- <item row="1" column="0">
- <widget class="QLabel" name="bleedLeftLabel">
- <property name="text">
- <string>Left:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="1">
- <widget class="ScrSpinBox" name="bleedLeftSpinBox"/>
- </item>
- <item row="2" column="0">
- <widget class="QLabel" name="bleedTopLabel">
- <property name="text">
- <string>Top:</string>
- </property>
- </widget>
- </item>
- <item row="2" column="1">
- <widget class="ScrSpinBox" name="bleedTopSpinBox"/>
- </item>
- <item row="2" column="3">
- <widget class="ScrSpinBox" name="bleedBottomSpinBox"/>
- </item>
- <item row="1" column="2">
- <widget class="QLabel" name="bleedRightLabel">
- <property name="text">
- <string>Right:</string>
- </property>
- </widget>
- </item>
- <item row="1" column="3">
- <widget class="ScrSpinBox" name="bleedRightSpinBox"/>
- </item>
- <item row="2" column="2">
- <widget class="QLabel" name="bleedBottomLabel">
- <property name="text">
- <string>Bottom:</string>
- </property>
- </widget>
- </item>
- <item row="0" column="0">
- <widget class="QCheckBox" name="docBleeds">
- <property name="text">
- <string>Use Document Bleeds</string>
- </property>
- </widget>
+ <layout class="QVBoxLayout" name="bleedGroupLayout">
+ <item>
+ <layout class="QHBoxLayout" name="bleedModeLayout">
+ <item>
+ <widget class="QRadioButton" name="noBleeds">
+ <property name="text">
+ <string>None</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="docBleeds">
+ <property name="text">
+ <string>Document settings</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="customBleeds">
+ <property name="text">
+ <string>Custom</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <spacer name="bleedModeSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </item>
+ <item>
+ <layout class="QHBoxLayout" name="bleedValuesLayout">
+ <item>
+ <widget class="NewMarginWidget" name="bleedsWidget" native="true"/>
+ </item>
+ <item>
+ <spacer name="bleedValuesSpacer">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>40</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
</item>
</layout>
</widget>
@@ -1539,6 +1550,12 @@
<header>ui/scrspinbox.h</header>
</customwidget>
<customwidget>
+ <class>NewMarginWidget</class>
+ <extends>QWidget</extends>
+ <header>ui/newmarginwidget.h</header>
+ <container>1</container>
+ </customwidget>
+ <customwidget>
<class>FontEmbeddingCombo</class>
<extends>QComboBox</extends>
<header>ui/fontembeddingcombo.h</header>
@@ -1629,11 +1646,9 @@
<tabstop>docInfoMarks</tabstop>
<tabstop>markLength</tabstop>
<tabstop>markOffset</tabstop>
+ <tabstop>noBleeds</tabstop>
<tabstop>docBleeds</tabstop>
- <tabstop>bleedLeftSpinBox</tabstop>
- <tabstop>bleedTopSpinBox</tabstop>
- <tabstop>bleedRightSpinBox</tabstop>
- <tabstop>bleedBottomSpinBox</tabstop>
+ <tabstop>customBleeds</tabstop>
<tabstop>PrintProfC</tabstop>
<tabstop>InfoString</tabstop>
</tabstops>
|
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2017-07-08 09:32 | ale | New Issue | |
| 2017-07-08 09:42 | JLuc | Relationship added | duplicate of 0010581 |
| 2017-07-08 09:44 | JLuc | Relationship replaced | related to 0010581 |
| 2017-07-08 12:42 | ale | Tag Attached: #easyhack | |
| 2017-07-08 17:00 | jghali | Category | |
| 2026-09-12 13:44 | buttar | Note Added: 0054457 | |
| 2026-09-12 13:44 | buttar | File Added: pdf-bleed-area-selection-v1.02.patch | |
| 2026-09-12 13:44 | buttar | File Added: pdf-export-bleed-area.png | |
| 2026-09-12 13:44 | buttar | Tag Attached: #please_test |