Объединитесь два (или больше) PDF

Я бы назвал это разделением , а не прокаткой , поскольку нет никакого перекрытия между выходными компонентами.

Относительно ответов ниже первый производит матрицу с ее столбцами, содержащими компоненты. Если эта матрица равна m, то m[, 1] является вектором 1:10. Это следует использовать, только если длина a кратна 10.

Второй ответ создает список, компоненты которого являются желаемыми векторами. Если этот список L, то L[[1]] является вектором 1:10.

Третий ответ создает матрицу, в которой строки содержат компоненты. Если эта матрица равна mm, то mm[1, ] является вектором 1:10. Эту альтернативу следует использовать, только если длина a кратна 10.

Четвертый такой же, как и третий, но он также работает в том случае, если длина a не кратна 10.

# 1
matrix(a, 10)

# 2
n <- length(a)
split(a, rep(1:n, each = 10, length = n))

# 3
library(zoo)
rollapply(a, 10, by = 10, c)

# 4
library(zoo)
rollapply(1:45, 10, by = 10, `length<-`, value = 10, partial = TRUE, align = "left")
53
задан Engineert 22 July 2019 в 23:42
поделиться

8 ответов

Мне пришлось решить аналогичную проблему, и в итоге я создал небольшую утилиту pdfmerge, в которой используется проект PDFSharp , который по существу лицензирован MIT.

код очень прост, мне понадобилась утилита cmdline, поэтому у меня больше кода, предназначенного для разбора аргументов, чем для слияния PDF:

using (PdfDocument one = PdfReader.Open("file1.pdf", PdfDocumentOpenMode.Import))
using (PdfDocument two = PdfReader.Open("file2.pdf", PdfDocumentOpenMode.Import))
using (PdfDocument outPdf = new PdfDocument())
{                
    CopyPages(one, outPdf);
    CopyPages(two, outPdf);

    outPdf.Save("file1and2.pdf");
}

void CopyPages(PdfDocument from, PdfDocument to)
{
    for (int i = 0; i < from.PageCount; i++)
    {
        to.AddPage(from.Pages[i]);
    }
}
84
ответ дан 7 November 2019 в 08:27
поделиться

Здесь уже есть несколько хороших ответов, но я подумал, что мог бы упомянуть, что pdftk может быть полезен для этой задачи. Вместо того, чтобы создавать один PDF-файл напрямую, вы можете создать каждый PDF-файл, который вам нужен, а затем объединить их вместе в качестве пост-процесса с pdftk. Это можно сделать даже изнутри вашей программы, используя вызов system () или ShellExecute ().

2
ответ дан 7 November 2019 в 08:27
поделиться

Я сделал это с помощью PDFBox. Я полагаю, он работает аналогично iTextSharp.

0
ответ дан 7 November 2019 в 08:27
поделиться

Вы можете попробовать pdf-shuffler gtk-apps.org

0
ответ дан 7 November 2019 в 08:27
поделиться

Я знаю, что многие люди рекомендовали PDF Sharp, однако похоже, что этот проект не обновлялся с июня 2008 года. Кроме того, источник недоступен.

Лично Я играл с iTextSharp, с которым было довольно легко работать.

0
ответ дан 7 November 2019 в 08:27
поделиться

Вот ссылка на пример с использованием PDFSharp и ConcatenateDocuments

1
ответ дан 7 November 2019 в 08:27
поделиться

PDFsharp , по-видимому, позволяет объединять несколько документов PDF в один.

И то же самое возможно с ITextSharp .

4
ответ дан 7 November 2019 в 08:27
поделиться

Здесь решение http: //www.wacdesigns .com / 2008/10/03 / слияния-PDF-файлы, используя-с Он использует бесплатную библиотеку iTextSharp с открытым исходным кодом http://sourceforge.net/projects/itextsharp

0
ответ дан 7 November 2019 в 08:27
поделиться
Другие вопросы по тегам:

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