# How to create booklet differently (stacked)?

I want to print user manual as booklet. I used booklet option in LibreOffice and it works as it was supposed to.

But there is a glitch.

This option assumes user wants to insert folded pages one into another forming a book. This is fine when you have to create few pages booklet.

If booklet is larger (dozen pagers or so), pages inserted in middle tend to stick out (due to paper and folding thickness), and you need some serious paper cutting to fix it.

What I would like is to print booklet in a manner that folded pages are not inserted in but stacked one on top of other.

Here is the illustration

On the left is standard booklet page insertion that user must implement to make booklet. On the right is stacked booklet I would like to get. Stacked is nice and tidy and much easier to make good looking booklet in home made conditions, with no need for cutting.

I could not find any info if this alternative booklet printing is possible with LibreOffice. Hints how to achieve this would be appreciated.

edit retag close merge delete

Sort by » oldest newest most voted

If I understand well the only way I see is to tick FilePrintPage LayoutBrochure and print successively:

• General tab▸Range and CopiesPages: 1-4
• General tab▸Range and CopiesPages: 5-8

etc.

[EDIT]

You can use a macro like:

option explicit

dim oDoc as object
dim Props(0) as New com.sun.star.beans.PropertyValue

Sub Main

dim oCursor as object
dim i as integer, iPages as integer

oDoc = thiscomponent
oCursor = oDoc.currentcontroller.viewCursor
oCursor.jumpToLastPage

iPages =  oCursor.getPage()

Props(0).Name = "Pages"

for i = 1 to iPages step 4
PysPrint(i, i + 3)
next i

End Sub

sub PysPrint(PageStart, PageEnd)

Props(0).Value = PageStart & "-" & PageEnd
oDoc.print(Props())

end sub


Note: the macro does not set the brochure parameter that must be done manually before running the macro.

Regards

more

Thanks,

I guess that would do (will try), but that is far to much manual settings as I have documents with large nmber of pages, and I would have to repeat setting each time I want to print (I do frequent updates of the documents).

I was looking for something like standard printing, just set it and run print. is it possible to create some macro that would do this?

( 2016-07-07 15:16:59 +0100 )edit

This macro works. There is some manual work involved but it pays of.

For some reason I could not print directly, I had to print to PDF, then merge PDF files into one and print. Using PDF is ok, since my intention is to share documents online.

( 2016-07-11 17:06:21 +0100 )edit

I had some progress with this problem. I managed to make script that recombines pages printing order so booklet print ends up with needed result. It is not complete and easy to use but it does work.

Idea of a script is to set printing order for pages in such manner that when printer is set to print booklet order of pages in print is suitable for simple folding. Sadly, default printer has to be set specifically for this purpose each time you want to use script.

I actually gave up trying to solve this using LibreOffice and wrote standalone C# application that does this job.

If someone is interested here is code:

REM
REM Booklet page sort
REM
REM by Predrag Supurovic, http://pedja.supurovic.net
REM
REM Date: 2017-02-13
REM
REM Reorders booklet page printing so pages are simply folded to a book.
REM
REM
REM Usage:
REM
REM - Open document you want to print as booklet
REM - Select printer and setup booklet printing but do not print
REM - Run this macro to print booklet instead of usual booklet printing
REM - As page is printed on both sites fold it adn stack adjacent pages toforma book
REM
REM Hints:
REM - Test with printing to PDF printer first so you can check if everything
REM   goes as expected
REM - If you want to repeadetly print the same booklet it is better to print booklet
REM   into PDF and then repeadetly print from that PDF
REM

option explicit

dim mDoc as object
dim Props(0) as New com.sun.star.beans.PropertyValue

Sub Main

dim mDocCursor as object
dim mDocPageCount as integer
dim mPrintPageCount as integer
dim mBookletPages as integer
dim i,j as integer
dim mBookletOrder as string
dim mBookletPage1 as integer
dim mBookletPage2 as integer
dim mBookletPage3 as integer
dim mBookletPage4 as integer
dim mPages() as integer

mDoc = thiscomponent
mDocCursor = mDoc.currentcontroller.viewCursor
mDocCursor.jumpToLastPage

mDocPageCount = mDocCursor.getPage()

mBookletPages = INT (mDocPageCount / 4)

if ((mDocPageCount mod 4) = 0) then

mPrintPageCount = mBookletPages * 4

redim mPages(mPrintPageCount) as integer

for i = 1 to mBookletPages

mBookletPage1 = (mBookletPages*4)-(i-1)*2
mPages(mBookletPage1) = (i*4)

mBookletPage2 = (i*2)-1
mPages(mBookletPage2) = (i*4)-3

mBookletPage3 = i*2
mPages(mBookletPage3) = (i*4)-2

mBookletPage4 = (mBookletPages*4)-(i-1)*2-1
mPages(mBookletPage4) = (i*4)-1

next i

mBookletOrder = ""
for j = 1 to mPrintPageCount

if mBookletOrder <> "" then
mBookletOrder = mBookletOrder + ", "
endif

mBookletOrder = mBookletOrder & mPages(j)

next j

Props(0).Name = "Pages"
Props(0).Value = mBookletOrder
mDoc.print(Props())
else
mBookletPages = mBookletPages + 1
msgbox ("Document contains " & mDocPageCount & " pages. " &  (mBookletPages)*4 & " pages are required for booklet print." & chr(13) & "Printing aborted!", 0, "Booklet printing error")
endif

end Sub

more

Sorry for the formatting. Site editor is very limited and refuses to format code properly (or I am too dumb to use it).

( 2017-07-12 17:05:17 +0100 )edit

( 2017-07-12 18:54:07 +0100 )edit

Hi,

I found this extension: print-brochure-for-writer

Maybe this is you are looking for.

I didn't try it.

Craig

more