Как сохранить закладки при реконструкции страниц файла PDF с инструментами как pdftk?

R не является моим любимым языком программирования, но это хорошо для вещей как это. Если Ваш файл CSV

***********
foo.csv
***********
 col1, col2, col3
"this, is the first entry", this is the second, 34.5
'some more', "messed up", stuff

В типе интерпретатора R

> x=read.csv("foo.csv", header=FALSE)

> x
                     col1                col2   col3
1 this, is the first entry  this is the second   34.5
2              'some more'           messed up  stuff
> x[1]  # first col
                      col1
1 this, is the first entry
2              'some more'
> x[1,] # first row
                      col1                col2  col3
1 this, is the first entry  this is the second  34.5

Относительно Ваших других запросов для "способности выбрать столбцы на основе имен столбцов, данных в первой строке", посмотрите

> x["col1"]
                      col1
1 this, is the first entry
2              'some more'

Для "поддержки других стилей заключения в кавычки" посмотрите quote аргумент read.csv (и связанные функции). Для "поддержки разделенных от вкладки файлов" посмотрите sep аргумент read.csv (набор sep к '\t').

Для получения дополнительной информации посмотрите справку онлайн.

> help(read.csv)

12
15.02.2013, 04:39
4 ответа

Необходимо сделать pdftk in.pdf dump_data > in.info, затем добавьте update_info параметр при генерации out.pdf. Заключение в кавычки от man pdftk:

update_info <info data filename | - | PROMPT>

Изменяет метаданные, сохраненные в Информационном словаре единственного PDF для соответствия файлу входных данных. Файл входных данных использует тот же синтаксис в качестве ‐ помещенный от dump_data. Символы неASCII должны быть закодированы как XML числовые объекты. Это не изменяет метаданные, сохраненные в потоке XMP PDF, если они имеют тот. Например:

             pdftk in.pdf update_info in.info output out.pdf

  update_info_utf8 <info data filename | - | PROMPT>

То же как update_info за исключением того, что вход кодируется как UTF-8.

6
27.01.2020, 19:55
  • 1
    Спасибо!, Как я получу этот файл "in.info"? –  StackExchange for All 20.07.2011, 18:22
  • 2
    @Tim: отредактированный. Я надеюсь, что это ясно теперь. Необходимо использовать dump_data_utf8 для update_info_utf8 работать, конечно. –  Philomath 20.07.2011, 18:28
  • 3
    Спасибо! Это все еще не работает. Мои команды находятся на трех шагах: pdftk in.pdf dump_data > in.info, pdftk in.pdf cat 1-22 43 23-42 44-end output out.pdf и pdftk out.pdf update_info in.info output out1.pdf Нет все еще никаких закладок в out1.pdf. ' –  StackExchange for All 20.07.2011, 20:10
  • 4
    @Tim я могу подтвердить, что это действительно не работает. Вы нашли какое-либо решение этого случайно? –  Glutanimate 15.02.2013, 03:47
  • 5
    Мое поверхностное траление Google предполагает, что закладки не обрабатываются вообще. –  vonbrand 16.02.2013, 07:03

Читая страницу справочника с осторожностью, это говорит это update_info берет данные в любом формате dump_data генерирует. Это, по-видимому, должно было бы быть скорректировано согласно перестановке страницы. Не звучит невозможным, но автоматическим, это не.

Сайт PDFtk только дает вышеупомянутый хит и создающие/редактирующие закладки как результаты. Весь Google знает о вопросе закладок в PDF и реорганизации, хиты на вышеупомянутых операциях и лирических воздействиях на чудесах, которые они предлагают, и этот поток ;-).

Таким образом, кажется, что это не может быть сделано. Комментарии предлагают некоторые возможности, которые не работали при попытке.

5
27.01.2020, 19:55

Вот рабочее решение. Однако вам нужно будет отрегулировать его в соответствии с вашими потребностями.

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

  1. удалить страницу 1 из in.pdf:

     pdftk A = in.pdf cat A2-end output temp.pdf 
     
  2. создать файл in.info из in.pdf:

     pdftk in.pdf dump_data> in.info 
     
  3. in.info в моем случае необходимо исправить, так как я удалю страницу.

    Таким образом, мне нужно уменьшить BookmarkPageNumber на единицу, чтобы закладки вели на правильные страницы.

    PHP-код:

     $ file = "in.info"; 
     $ data = file_get_contents ($ file); 
     
    foreach (explode ("\ n" , $ data) как $ row) {
     $ tmp = explode (":", $ row); 
     
    if ($ tmp [0] == "BookmarkPageNumber") {
    if ($ tmp [1]! = "1") $ tmp [1] -; 
    echo $ tmp [0]. ":". $ Tmp [1]. " \ n "; 
    } else {
    echo $ row." \ n "; 
    } 
    } 
     
  4. создать окончательный результат. pdf:

     pdftk temp.pdf update_info in2.info output out.pdf 
     

протестировано при работе с debian с использованием pdftk 2.01

9
27.01.2020, 19:55

«pdfmod» - это простой графический инструмент, который позволяет удалить одну или несколько страниц из существующего PDF-файла. Это всего лишь несколько щелчков мышью. Он также сохраняет информацию о содержимом и перекрестные ссылки в pdf.

«pdftk» работает хорошо, и я использовал его долгое время, но обычно терял содержимое после удаления одной или двух страниц из pdf. Те файлы pdf, которые протестированы в "pdftk" и "pdfmod", создаются из openoffice.

https://apps.fedoraproject.org/packages/pdfmod

1
27.01.2020, 19:55

Теги

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