2012-02-21 3 views
0

у нас есть большое количество PDF-контента на нашем сайте. У меня есть некоторые прекрасно используемые миниатюры CFPDF, созданные на странице 1 каждого PDF. Я подумал, что было бы неплохо, чтобы миниатюра jpg была такой ссылкой, что при нажатии на нее вы либо видите первую страницу как есть, либо генерируете другой предварительный просмотр в полном масштабе.Coldfusion cfpdf thumbnail плюс предварительный просмотр?

Я экспериментирую с использованием действия слияния CFPDF, но без большой удачи. Кажется, что нет способа извлечь только одну страницу из PDF - удалите их только.

Есть ли у кого-нибудь предложения? Я действительно ценю это! Благодаря!

UPDATE: попробуйте и уточните, вот код, который я использую прямо сейчас. Извините за беспорядок!

<cfset dir = expandPath("\images\thumbs")> 
<cfif not directoryExists(dir)> 
    <cfdirectory action="create" directory="#dir#"> 
</cfif> 
<cfset firstPage = expandPath("\images\thumbs\firstPage.pdf")> 

<cfpdf action="thumbnail" 
source="source" 
destination="#dir#" 
format="jpg" 
scale="40" 
overwrite="yes" 
pages="1" 
resolution="low"> 
<cfpdf action="merge" 
source="sameSource" 
pages="1" 
destination="#firstPage#" 
overwrite="yes"> 
<a href="firstPage.pdf" target="_blank"> 
<img src="thumbnail.jpg" style="border: 1px solid silver;"> 
</a> 

В любом случае, я надеюсь, что это лучше объясняет, что я пытаюсь сделать. Как я уже сказал, это работает, но firstPage.pdf всегда является единственным файлом - что происходит, если несколько человек просматривают разные PDF-файлы одновременно?

Спасибо!

+0

Я забыл упомянуть, что в настоящее время я генерации двух эскизов, один в полном масштабе и один меньше, и я линкующего большой от маленького. Это работоспособно, но неуклюже и даже «полномасштабный» предварительный просмотр не является. Благодаря! – daltec

+0

Вопрос немного неясен;) Вы спрашиваете, как извлечь произвольную страницу или создать эскиз произвольной страницы? – Leigh

ответ

2

(Если я понять вопрос правильно ...)

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

<cfpdf action = "merge" 
    source="c:\dev\myFile.pdf" 
    pages="10" 
    name="singlePage" /> 

<cfcontent type="application/pdf" variable="#ToBinary(singlePage)#">  

что произойдет, если несколько человек предпросмотра разных файлов PDF на например, ?

Edit: Некоторые из них в конечном итоге просмотре неправильно страницу и/или уменьшенное изображение;) Чтобы избежать этого, необходимо создать уникальное имя файла каждый раз, когда, например, с помощью getTempFile(), createUUID() & ".pdf" и т. д.

Хотя технически вам не нужно создавать файл. Вы можете генерировать изображения/PDF-файлы только в памяти и обслуживать их с помощью cfcontent (как в примере выше).

+0

У меня это работает, но я не уверен, что это «правильно» или нет. Я добавил этот перед слиянием с CFPDF на # firstPage *. Затем я установил цель этой миниатюры в этот файл. Кажется, что работает, и создается новый PDF-файл с каждым другим файлом, на который я нажимаю, но, ну ... что-то меня беспокоит, lol. Я не знаю достаточно об этом, чтобы рассказать, что это может быть. Есть идеи? И еще раз спасибо за вашу помощь, Ли, я ценю это! – daltec

+0

См. Мой обновленный ответ. – Leigh

+0

Спасибо, Ли, я сейчас работаю над этим. У меня возникли проблемы с выяснением того, как связать PDF-файлы в памяти с ссылкой на миниатюру, тем не менее, что, когда вы нажимаете на миниатюру, * затем *, он служит для файла cfcontent.Я попытался сделать img src отдельным cfm, содержащим cfcontent, но я получаю сообщение об ошибке «undefined». Любые подсказки? – daltec

1

Его очень легко

<cfpdf source="pdfdata" pages="1" action="thumbnail" destination="." format="jpg" overwrite="true" resolution="high" scale="25"> 

Это превратит страницу один в JPG

+0

Спасибо, Дэйл, я довольно понятен в этой части - миниатюры JPG выглядят прекрасно, а масштаб = «100» JPG тоже не слишком плохи. Но я хочу, чтобы миниатюра была ссылкой на первую страницу самого PDF-файла - не было другого миниатюры (это то, что я делаю сейчас). Большое спасибо! – daltec

+0

Это должно быть легко, просто '