View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0017518 | Scribus | Printing | public | 2025-05-13 14:02 | 2025-05-15 06:38 |
Reporter | jirib | Assigned To | jghali | ||
Priority | normal | Severity | minor | Reproducibility | always |
Status | closed | Resolution | no change required | ||
Product Version | 1.6.5.svn | ||||
Summary | 0017518: bleed/crop/registration marks and color bar is always added even if bleed area is 0 sized | ||||
Description | When trying to do cover for a book, my goal was to somehow print it. I created two facing pages starting with left page to have the cover - outside-back and outside-front. I needed to crop it. Since we do not provide printing it as "spread", I thought I could print it as two pages where crop marks would be only on top, bottom, outside bleed areas; however, even with inside bleed set to 0, Scribus always creates the print with marks in inside area, thus preventing to "merge" cover pages to be delivered to a print shop. Thus, I tried to cook a diff. | ||||
Steps To Reproduce | 1. two facing pages - starting with left 2. inside bleed set to 0 size 3. enable printing crop marks 4. print Each pages has crop marks even on "inside". | ||||
Additional Information | I haven't compile it, it is just a try. I'm sorry but I'm not really a developer. ---%>--- diff --git a/scribus/scpageoutput.cpp b/scribus/scpageoutput.cpp index 5143006f9..9f688af64 100644 --- a/scribus/scpageoutput.cpp +++ b/scribus/scpageoutput.cpp @@ -1588,7 +1588,7 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks double bottom = offsetY + height, top = offsetY; drawBoxMarks(painter, QRectF(QPointF(left, top), QPointF(right, bottom)), bleedBox, markOffs, markLength); } - if (options.bleedMarks) + if (options.bleedMarks && (bleedTop > 0.0 || bleedBottom > 0.0 || bleedLeft > 0.0 || bleedRight > 0.0)) { double left = offsetX - bleedLeft, right = offsetX + width + bleedRight; double bottom = offsetY + height + bleedBottom, top = offsetY - bleedTop; @@ -1596,33 +1596,47 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks } if (options.registrationMarks) { - double posX = (2* offsetX + width) / 2.0 - 7.0; - double posY = (offsetY + height + bleedBottom + markOffs + 3.0); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (2 * offsetX + width) / 2.0 - 7.0; - posY = (offsetY - bleedTop - markOffs - 17); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - - posX = (offsetX - bleedLeft - markOffs - 17); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (offsetX + width + bleedRight + markOffs + 3.0); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - } - if (options.colorMarks) + if (bleedBottom > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY + height + bleedBottom + markOffs + 3.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedTop > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY - bleedTop - markOffs - 17; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedLeft > 0.0) + { + double posX = offsetX - bleedLeft - markOffs - 17; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedRight > 0.0) + { + double posX = offsetX + width + bleedRight + markOffs + 3.0; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + } + if (options.colorMarks && bleedTop > 0.0) { int shade = 100; double startX = offsetX + 6.0; @@ -1686,33 +1700,49 @@ void ScPageOutput::drawBoxMarks(ScPainterExBase* painter, const QRectF& box, con double bleedBottom = bleedBox.bottom(); double bleedTop = bleedBox.top(); // Top Left - start.setXY(bleedLeft - offset, top); - end.setXY (bleedLeft - offset - markSize, top); - painter->drawLine(start, end); - start.setXY(left, bleedTop - offset); - end.setXY (left, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, top); + end.setXY(bleedLeft - offset - markSize, top); + painter->drawLine(start, end); + + start.setXY(left, bleedTop - offset); + end.setXY(left, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Top Right - start.setXY(bleedRight + offset, top); - end.setXY (bleedRight + offset + markSize, top); - painter->drawLine(start, end); - start.setXY(right, bleedTop - offset); - end.setXY (right, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, top); + end.setXY(bleedRight + offset + markSize, top); + painter->drawLine(start, end); + + start.setXY(right, bleedTop - offset); + end.setXY(right, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Bottom Left - start.setXY(bleedLeft - offset, bottom); - end.setXY (bleedLeft - offset - markSize, bottom); - painter->drawLine(start, end); - start.setXY(left, bleedBottom + offset); - end.setXY (left, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, bottom); + end.setXY(bleedLeft - offset - markSize, bottom); + painter->drawLine(start, end); + + start.setXY(left, bleedBottom + offset); + end.setXY(left, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } // Bottom Right - start.setXY(bleedRight + offset, bottom); - end.setXY (bleedRight + offset + markSize, bottom); - painter->drawLine(start, end); - start.setXY(right, bleedBottom + offset); - end.setXY (right, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, bottom); + end.setXY(bleedRight + offset + markSize, bottom); + painter->drawLine(start, end); + + start.setXY(right, bleedBottom + offset); + end.setXY(right, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } } void ScPageOutput::drawRegistrationCross(ScPainterExBase* painter) ---%<--- | ||||
Tags | No tags attached. | ||||
Patch | No | ||||
|
marks.diff (5,617 bytes)
diff --git a/scribus/scpageoutput.cpp b/scribus/scpageoutput.cpp index 5143006f9..9f688af64 100644 --- a/scribus/scpageoutput.cpp +++ b/scribus/scpageoutput.cpp @@ -1588,7 +1588,7 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks double bottom = offsetY + height, top = offsetY; drawBoxMarks(painter, QRectF(QPointF(left, top), QPointF(right, bottom)), bleedBox, markOffs, markLength); } - if (options.bleedMarks) + if (options.bleedMarks && (bleedTop > 0.0 || bleedBottom > 0.0 || bleedLeft > 0.0 || bleedRight > 0.0)) { double left = offsetX - bleedLeft, right = offsetX + width + bleedRight; double bottom = offsetY + height + bleedBottom, top = offsetY - bleedTop; @@ -1596,33 +1596,47 @@ void ScPageOutput::drawMarks(ScPage* page, ScPainterExBase* painter, const Marks } if (options.registrationMarks) { - double posX = (2* offsetX + width) / 2.0 - 7.0; - double posY = (offsetY + height + bleedBottom + markOffs + 3.0); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (2 * offsetX + width) / 2.0 - 7.0; - posY = (offsetY - bleedTop - markOffs - 17); - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - - posX = (offsetX - bleedLeft - markOffs - 17); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - posX = (offsetX + width + bleedRight + markOffs + 3.0); - posY = (2 * offsetY + height) / 2.0 - 7.0; - painter->save(); - painter->translate(posX, posY); - drawRegistrationCross(painter); - painter->restore(); - } - if (options.colorMarks) + if (bleedBottom > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY + height + bleedBottom + markOffs + 3.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedTop > 0.0) + { + double posX = (2 * offsetX + width) / 2.0 - 7.0; + double posY = offsetY - bleedTop - markOffs - 17; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedLeft > 0.0) + { + double posX = offsetX - bleedLeft - markOffs - 17; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + + if (bleedRight > 0.0) + { + double posX = offsetX + width + bleedRight + markOffs + 3.0; + double posY = (2 * offsetY + height) / 2.0 - 7.0; + painter->save(); + painter->translate(posX, posY); + drawRegistrationCross(painter); + painter->restore(); + } + } + if (options.colorMarks && bleedTop > 0.0) { int shade = 100; double startX = offsetX + 6.0; @@ -1686,33 +1700,49 @@ void ScPageOutput::drawBoxMarks(ScPainterExBase* painter, const QRectF& box, con double bleedBottom = bleedBox.bottom(); double bleedTop = bleedBox.top(); // Top Left - start.setXY(bleedLeft - offset, top); - end.setXY (bleedLeft - offset - markSize, top); - painter->drawLine(start, end); - start.setXY(left, bleedTop - offset); - end.setXY (left, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, top); + end.setXY(bleedLeft - offset - markSize, top); + painter->drawLine(start, end); + + start.setXY(left, bleedTop - offset); + end.setXY(left, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Top Right - start.setXY(bleedRight + offset, top); - end.setXY (bleedRight + offset + markSize, top); - painter->drawLine(start, end); - start.setXY(right, bleedTop - offset); - end.setXY (right, bleedTop - offset - markSize); - painter->drawLine(start, end); + if (bleedTop > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, top); + end.setXY(bleedRight + offset + markSize, top); + painter->drawLine(start, end); + + start.setXY(right, bleedTop - offset); + end.setXY(right, bleedTop - offset - markSize); + painter->drawLine(start, end); + } // Bottom Left - start.setXY(bleedLeft - offset, bottom); - end.setXY (bleedLeft - offset - markSize, bottom); - painter->drawLine(start, end); - start.setXY(left, bleedBottom + offset); - end.setXY (left, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedLeft > 0.0) + { + start.setXY(bleedLeft - offset, bottom); + end.setXY(bleedLeft - offset - markSize, bottom); + painter->drawLine(start, end); + + start.setXY(left, bleedBottom + offset); + end.setXY(left, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } // Bottom Right - start.setXY(bleedRight + offset, bottom); - end.setXY (bleedRight + offset + markSize, bottom); - painter->drawLine(start, end); - start.setXY(right, bleedBottom + offset); - end.setXY (right, bleedBottom + offset + markSize); - painter->drawLine(start, end); + if (bleedBottom > 0.0 && bleedRight > 0.0) + { + start.setXY(bleedRight + offset, bottom); + end.setXY(bleedRight + offset + markSize, bottom); + painter->drawLine(start, end); + + start.setXY(right, bleedBottom + offset); + end.setXY(right, bleedBottom + offset + markSize); + painter->drawLine(start, end); + } } void ScPageOutput::drawRegistrationCross(ScPainterExBase* painter) |
|
PS: I could not figure out how to prevent presence of 'Page Information' :-( |
|
>> Since we do not provide printing it as "spread", I thought I could print it as two pages where crop marks would be only on top, bottom, outside bleed areas; however, even with inside bleed set to 0, Scribus always creates the print with marks in inside area, thus preventing to "merge" cover pages to be delivered to a print shop. Professional do not layout covers using spreads or facing pages. Facing pages simply do not work if spine width is several mm. Covers are layouted using single page documents. In this context, there is no "inside bleed", just left bleed and right bleed. |
|
I compiled this and it did not solve it :/ |
|
I put qDebug() "print" into ScPageOutput::drawMarks() and it is not visible on scribus stdout, so it seem it never ends this function ??? |
|
I made a test with Adobe Indesign and it always add bleed marks even when bleed is set to 0. So from our perspective, this issue is a "No change required". as not adding bleed marks on either side when requested would fail meeting professional requirements. Which means I will not accept any patch for this "issue". As I already wrote, you are using an incorrect method for layouting your cover : covers must be layouted using single page documents, ie "facing pages" must no be used for covers. |
|
OK, close it; however it is confusing that one can set it to 0 but it is still present :) |
Date Modified | Username | Field | Change |
---|---|---|---|
2025-05-13 14:02 | jirib | New Issue | |
2025-05-13 14:02 | jirib | File Added: marks.diff | |
2025-05-13 14:03 | jirib | Note Added: 0052516 | |
2025-05-13 18:48 | jghali | Note Added: 0052520 | |
2025-05-13 19:10 | jghali | Note Edited: 0052520 | |
2025-05-14 08:45 | jirib | Note Added: 0052526 | |
2025-05-14 15:26 | jirib | Note Added: 0052531 | |
2025-05-14 18:24 | jghali | Note Added: 0052533 | |
2025-05-14 18:29 | jghali | Note Edited: 0052533 | |
2025-05-14 20:23 | jirib | Note Added: 0052535 | |
2025-05-15 06:38 | jghali | Assigned To | => jghali |
2025-05-15 06:38 | jghali | Status | new => resolved |
2025-05-15 06:38 | jghali | Resolution | open => no change required |
2025-05-15 06:38 | jghali | Status | resolved => closed |