I'm making maps for a book where maps run to the edge of the page. The printer has advised a 3mm bleed space around images, therefore if my page is 127x177 mm, images should be 133x183 mm. This bleed space is to allow for errors when the book pages are cut, and in the case of maps should not have any essential information. So I use a composer page size that includes these extra 3 mm on all sides.

I don't want labels for towns to be cut off at the edge of the map, therefore I have disabled the "Show partials labels" option. However, labels are still being shown within this 3 mm "no-man's-land" that may be cut by the printer.

Map with bleed where no labels should render

The solution I have considered is to make two overlapping, concentric and perfectly aligned maps, the lower map runs to the edge of the bleed and would not show the towns, the map on top would be the exact size of the book page (i.e. 3mm less on each side than the underlying map) and would show the town layer, therefore creating a 3 mm border where there are no towns (or labels) shown.

However, I can't make these two maps align perfectly in composer. I have tried calculating the extents for these two maps so they have the same center and the same scale, but QGIS composer seems to have a fixed 3 decimal place precision so I can never get them to align perfectly.

Another way to approach this problem would be a new feature which would allow not rendering labels within the atlas "Margin around feature".

Is there any way I can prevent labels from being rendered within a bleed border?

2 Answers 2


The solution below might not be a perfect solution to your problem, but it will be a workaround to solve the issue that you have.

If the number of points (cities) that you don't want to show within the bleed are few, you can exclude them using Query Builder, as follows

  1. Right-click the target layer (city point layer) -> go to layer properties
  2. Go to General tab
  3. At the bottom right there is a button "Query Builder", click on it to build a query
  4. Write an expression "FIELD_NAME" != 'NAME OF THE CITY'
  5. Substitute the FIELD_NAME with the field which contains city names, and Substitute the 'NAME OF THE CITY' with the name of the city that you want it to be excluded from being shown within the bleed
  6. If you want to exclude more that one city, then you have to write "FIELD_NAME" != 'NAME OF THE CITY_1' AND "FIELD_NAME" != 'NAME OF THE CITY_2' and so on.

I find that maps are often made up of more exceptions to the rule than things that follow the rule, so I use the attribute table for things like this.

An attribute table + style solution:

  1. Create a new integer field, call it something logical like "ShowHide"
  2. Set all the points/labels you want to show as '1' and the things you don't want to show as '0'
  3. Hide points: set the layer style using the "ShowHide" field to Categorized (turn off the ones you want hidden) or Rule-based (make a rule that only shows what you want"ShowHide" = 1)
  4. Hide labels: go to layer style > label > rendering and set the 'Show Label' to data defined using the "ShowHide" field or use Rule-based labels same as for the style.

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.