Как я могу объединиться, две страницы PDF обнаруживаются на той же странице? [закрытый]

(Много теоретических и концептуальных объяснений приведено выше)

Ниже приведены некоторые практические примеры, когда я использовал static_cast, dynamic_cast, const_cast, reinterpret_cast.

(Также ссылается на это, чтобы понять объяснение: http://www.cplusplus.com/doc/tutorial/typecasting/ )

static_cast:

OnEventData(void* pData)

{
  ......

  //  pData is a void* pData, 

  //  EventData is a structure e.g. 
  //  typedef struct _EventData {
  //  std::string id;
  //  std:: string remote_id;
  //  } EventData;

  // On Some Situation a void pointer *pData
  // has been static_casted as 
  // EventData* pointer 

  EventData *evtdata = static_cast(pData);
  .....
}

dynamic_cast:

void DebugLog::OnMessage(Message *msg)
{
    static DebugMsgData *debug;
    static XYZMsgData *xyz;

    if(debug = dynamic_cast(msg->pdata)){
        // debug message
    }
    else if(xyz = dynamic_cast(msg->pdata)){
        // xyz message
    }
    else/* if( ... )*/{
        // ...
    }
}

const_cast:

// *Passwd declared as a const

const unsigned char *Passwd


// on some situation it require to remove its constness

const_cast(Passwd)

reinterpret_cast:

typedef unsigned short uint16;

// Read Bytes returns that 2 bytes got read. 

bool ByteBuffer::ReadUInt16(uint16& val) {
  return ReadBytes(reinterpret_cast(&val), 2);
}

25
задан Boris Gorelik 11 February 2009 в 08:21
поделиться

5 ответов

Выезд этот ответ , который использует Многовалентный для наложения страниц PDF

2
ответ дан Community 15 October 2019 в 16:43
поделиться

На Linux можно преобразовать файлы PDF в Постскриптум и использование psnup. Точный способ вызвать его зависит от точно, как Вы хотите, чтобы страницы были соединены, хотите ли Вы их повернутый, какой формат (форматы) бумаги Вы хотите использовать, и т.д. но это будет что-то вроде этого:

pdf2ps infile.pdf infile.ps
psnup -2 infile.ps outfile.ps
ps2pdf outfile.ps outfile.pdf

В зависимости от того, какие инструменты Вы имеете в наличии, у Вас мог бы быть более эффективный способ сделать, это - psnup является, конечно, не единственным путем, но это - относительно известная программа (на Linux так или иначе).

9
ответ дан David Z 15 October 2019 в 16:43
поделиться

Проверьте исходный код PyPDF, особенно rotateClockwise () метод. Должно быть место, где содержание страницы записано. Вставьте "q" оператор (сохраните состояние), и "cm" (с корректными параметрами для масштабирующейся матрицы) перед содержанием и оператором "Q" (состояние восстановления) впоследствии.

Видят документация в формате PDF для объяснения операторов, и структура страницы (прокрутите к нижней части для некоторых полезных ссылок).

не забывают отправлять патч к PyPDF :)

[РЕДАКТИРОВАНИЕ], Вы могли бы также хотеть проверить pdfjam источники , которые включают команду pdfnup.

0
ответ дан Aaron Digulla 15 October 2019 в 16:43
поделиться

Это - функция жемчуга, которую я использую, чтобы захватить каталог, полный prn файлов из приложения сторонних производителей и создать единственный объединенный PDF.

sub runMerged($)
{
    my($path) = @_;

    print "Generating merged PDFs for $path\n";

    my @files = sort(getFiles($path, ".prn\$"));
    if (scalar(@files))
    {
        open(MERGE, ">$path/merged.prn");
        for (my $i = 0; $i < scalar(@files); $i++)
        {
            print MERGE "^L\n" if ($i > 0);

            open(FN, "$path/" . $files[$i]);
            while (my $line = <FN>)
            {
                print MERGE $line;
            }
            close(FN);
        }

        chdir("$BASE_PATH/txt2pdf");
        print `./txt2pdf.pl $path/merged.prn`;
    }
}
0
ответ дан user44585 15 October 2019 в 16:43
поделиться

Вот краткое описание инструментов, которые я нашел для PDF (я хотел найти эквивалент psup и psbook)

  • Создание буклетов: pdfbook, pdf-tools (команда: pdfbklt)
  • Слияние PDF файлов: pdfmerge, pdfjam (команда: pdfjoin)
  • Поворот страниц: pdfjam (команда: pdf90)
  • Несколько страниц на лист: pdfjam (команда: pdfnup)
  • Создание постеров (несколько листов на страницу): pdfposter

Из моего менеджера пакетов:

Создание буклета формата A6:

pdfbook -2 -p a5 infile.pdf outfile.pdf

pdf-tools содержит:

  • pdfbklt: создание буклетов
  • pdfrevert: Удаляет один слой изменений в PDF-файле, стараясь максимально увеличить размер выходного файла (для учета линеаризованного PDF).
  • pdfstamp: Добавляет заданную строку в файл infile .pdf в указанном месте, шрифтом и размером.

Существует также мультивалентность: http://multivalent.sourceforge.net/Tools/index.html

24
ответ дан 28 November 2019 в 21:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: