2016-08-16 3 views
0

Im надеясь, что кто-то может мне помочь.Использование FOP для извлечения страниц из PDF PDF и создания A3 PDF

В настоящий момент я создаю документы формата A4 с использованием FOP и XSLT. Меня попросили взять эти A4 (портретные) страницы, а затем сшить их в буклет A3. Так, например, у меня есть 4-страничный документ формата А4, который мне нужно преобразовать в двухсторонний буклет A3 с возможностью заказа первой стороны, используя страницы 4 и 1 (бок о бок), а затем с другой стороны - страницы 2 и 3

Я просмотрел PDFBOX, чтобы узнать, может ли он это сделать, но не имел успеха.

Есть ли у кого-нибудь идеи, как я могу получить результат, который мне нужен?

Вся помощь приветствуется!

+0

* Я посмотрел на PDFBOX, чтобы увидеть, если он может это сделать, но было нет успеха. * - Посмотрите рекомендации, приведенные в комментариях к [«PDFBox: поместите две страницы А4 на один A3»] (http://stackoverflow.com/questions/38952984/pdfbox-put-two-a4- страницы на один-a3). Эти рекомендации указывают на решения, использующие PDFBox, в то время как единственный ответ указывает на использование другой библиотеки. – mkl

+0

Собираетесь ли вы создавать страницы формата A3, такие как обложка книги XSL-FO? Или вы хотите сделать страницы формата A3 PDF из существующих страниц формата A4 PDF через PDFBox? – tmakita

+0

В идеале я хотел бы взять 4 страницы PDF PDF (все из одного файла PDF), а затем сшить их вместе, чтобы создать буклет A3 PDF (последовательность, упомянутая выше). Просто не уверен, что лучший способ сделать это. Я собираюсь попробовать метод, который Штефан любезно предложил, поскольку для меня нет проблемы с созданием нового шаблона A3, который тянет страницы, которые мне нужны, из уже созданного pdf-файла. –

ответ

0

Вы можете сделать это с ФОП, если вы хотите, и если вы установите PDF Images Plug-In for FOP

<?xml version="1.0" encoding="UTF-8"?> 
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
    <fo:layout-master-set> 
     <fo:simple-page-master master-name="a3" margin-right="0mm" margin-left="0mm" margin-bottom="0mm" margin-top="0mm" page-width="42cm" page-height="29.7cm"> 
      <fo:region-body margin-left="0mm" margin-top="0mm" margin-bottom="0mm" margin-right="0mm"/> 
     </fo:simple-page-master> 
     <fo:page-sequence-master master-name="a3n"> 
      <fo:repeatable-page-master-alternatives> 
       <fo:conditional-page-master-reference master-reference="a3" page-position="any"/> 
      </fo:repeatable-page-master-alternatives> 
     </fo:page-sequence-master> 
    </fo:layout-master-set> 
    <fo:page-sequence master-reference="a3n"> 
     <fo:flow flow-name="xsl-region-body"> 
      <fo:block-container height="29.7cm" width="20.9cm" top="0mm" left="0mm" position="absolute"> 
       <fo:block> 
        <fo:external-graphic content-height="29.7cm" content-width="21cm" height="29.7cm" width="21cm" src="yourpathdoc.pdf#page=2"/> 
       </fo:block> 
      </fo:block-container> 
      <fo:block-container height="29.7cm" width="20.9cm" top="0mm" left="209mm" position="absolute"> 
       <fo:block> 
        <fo:external-graphic content-height="29.7cm" content-width="21cm" height="29.7cm" width="21cm" src="yourpathdoc.pdf#page=3"/> 
       </fo:block> 
      </fo:block-container> 
      <fo:block-container> 
       <fo:block font-size="0.1pt" page-break-after="always" break-after="page"> </fo:block> 
      </fo:block-container> 
      <fo:block-container height="29.7cm" width="20.9cm" top="0mm" left="0mm" position="absolute"> 
       <fo:block> 
        <fo:external-graphic content-height="29.7cm" content-width="21cm" height="29.7cm" width="21cm" src="yourpathdoc.pdf#page=4"/> 
       </fo:block> 
      </fo:block-container> 
      <fo:block-container height="29.7cm" width="20.9cm" top="0mm" left="209mm" position="absolute"> 
       <fo:block> 
        <fo:external-graphic content-height="29.7cm" content-width="21cm" height="29.7cm" width="21cm" src="yourpathdoc.pdf#page=1"/> 
       </fo:block> 
      </fo:block-container> 
     </fo:flow> 
    </fo:page-sequence> 
</fo:root> 

Редактировать

в В случае, если вы хотите его портрет для облегчения печати, просто переключите страницу ширины и page-height простейшей страницы и заменить четыре строки блока-контейнера, содержащие положение = «абсолютное», с

  <fo:block-container height="29.7cm" width="21cm" top="0mm" left="0mm" position="absolute" reference-orientation="270"> 
... 
      <fo:block-container height="29.7cm" width="21cm" top="210mm" left="0mm" position="absolute" reference-orientation="270"> 
... 
      <fo:block-container height="29.7cm" width="21cm" top="0mm" left="0mm" position="absolute" reference-orientation="270"> 
... 
      <fo:block-container height="29.7cm" width="21cm" top="210mm" left="0mm" position="absolute" reference-orientation="270"> 

и если у вас есть более чем две страницы, не забудьте вставить

  <fo:block-container> 
       <fo:block font-size="0.1pt" page-break-after="always" break-after="page"> </fo:block> 
      </fo:block-container> 

везде между ними (после каждого второго изображения)

+0

@MikeTaylor, любой успех с ним? Высказывание «Спасибо» в SO означает проверить отметку, чтобы принять ответ :-) –

Смежные вопросы