2013-04-29 5 views
4

Я ударился головой о стену, пытаясь выяснить причину ошибки ниже.Ошибка заполнения значения CFPDFForm - java.lang.NullPointerException: имя платформы, локали и платформы не должно быть 0:

enter image description here

Все, что я делаю это работает очень простой CFPDFFORM для заполнения формы PDF.

<cfset source = expandPath("Customer.pdf")> 
<cfpdfform action="populate" source="#source#"> 
    <cfpdfformparam name="Name" value="John Doe"> 
    <cfpdfformparam name="Address" value="123 Test Cir"> 
    <cfpdfformparam name="City" value="Some City"> 
    <cfpdfformparam name="State" value="Some State"> 
    <cfpdfformparam name="Zip" value="11111"> 
    <cfpdfformparam name="Phone" value="123-456-7890"> 
</cfpdfform> 

Я проделал много поисков и нашел очень мало людей, говорящих об этой ошибке. Одна страница, которую я нашел, была ColdFusion CFPDFFORM does not populate PDF form fields. Я попробовал задуматься о том, чтобы пройти через мои шрифты и искать коррумпированных. Я даже использовал программу Fix Fonts Folder (http://fix-fonts-folder.en.softonic.com/), которая смогла найти некоторые поврежденные шрифты. Но даже тогда я все еще получаю ошибку. Итак, я отчаянно ищу ответ.

На всякий случай, я бегу ColdFusion 10 Update 9 на Windows 7.

Заранее спасибо.

+0

Может быть вопрос прав? Возможно, служба ColdFusion не имеет прав на определенные шрифты. Не могли бы вы попробовать предоставить права на эту папку/файлы для службы ColdFusion? –

+2

Не то, чтобы это помогло вам в настоящее время, но я нашел связанную ошибку: https://bugbase.adobe.com/index.cfm?event=bug&id=3503472 Если вы не можете проголосовать за нее и дать свой пример, чтобы получить Adobe посмотри на это. –

+0

Как был создан исходный файл PDF (какое программное обеспечение)? –

ответ

2

Обходной путь по сообщаемой ошибке разрешил проблему. Благодаря Мигель-F

Для устранения этой проблемы: «удалить все шрифты, установленные с той же датой, как ваша творческим облаком 6 приложения установка или удалением творческим могут 6»

2

имели один и тот же вопрос сам.

Мое решение (которое хвалит выше правильный ответ): Вот список шрифтов Adobe устанавливает с Creative Suite 6: http://www.adobe.com/type/browser/fontinstall/cs6installedfonts.html

  1. Скопировать все эти шрифты в отдельную папку и удалить из Каталог Windows/Fonts.
  2. Проверьте бит CFPDFFORM и подтвердите его работу
  3. Вручную добавьте их обратно.

В моем случае оказалось, что ни один из этих шрифтов не был поврежден сам по себе, хотя, вероятно, не был установлен так, как Windows. Повторная установка вручную вручную устранила проблему.

Еще одно примечание: я удалил все, пока MyriadPro (включая его) постоянно обновлял страницу, содержащую бит CFPDFFORM, до тех пор, пока он не сработает. Поэтому для тех, кто пытается быстро решить проблему, я рекомендую начать с семьи MyriadPro. Просто может получиться, что это тот, который разрушает вещи.

Надеюсь, что это поможет кому-то!

/////////////// ОБНОВЛЕНО 7/02/2014 ///////////////////////// //////////////////////////////////////////

Получается, что я я не могу прокомментировать, пока не будет получено определенное количество очков, поэтому я не могу сказать, насколько ответ Джесси Карлтон (выше) помог мне.

Вот еще один шаг, который решил мне ошибку:

  1. Оказывается, что некоторые из Adobe установлены шрифты имеют значения имен как нуль, следовательно, провалив cfpdfform плохо.Чтобы найти эти файлы, используйте скрипт, созданный Джесси Карлтоном (опять же, это выше в одном из ответов)

  2. По крайней мере, в моем случае все эти шрифты имели повторяющиеся значения (обычные и _0 единицы). Нормальные значения были видны и легко удаляются с помощью диспетчера шрифтов Windows. Однако, _0 не были видны.

  3. Скачать программу, такую ​​как FontExpert2014 (или любой другой менеджер шрифтов, если на то пошло), и найти файлы, которые вы не могли видеть в диспетчере шрифтов Windows.

  4. Чтобы проверить, удалены ли все поврежденные шрифты, запустите сценарий с шага 1 снова. Когда вы получите пустую таблицу, попробуйте бит cfpdfform, который раньше не срабатывал, и все должно быть хорошо.

* программное обеспечение с шага 3 было загружено как оценочная версия и сделало трюк для меня.

+0

Не забудьте [проголосовать за ошибку] ​​(https://bugbase.adobe.com/index.cfm?event=bug&id=3503472), чтобы помочь Adobe исправить это. – Leigh

4

У меня была такая же проблема сразу после установки CS6.0.

Платформа:

  • CF9.0
  • Win 7
  • CS6 (очевидно)

Методом проб и ошибок, как указано выше, и хорошее несколько перезапусков ColdFusion Я ve уничтожил его до следующих файлов шрифтов, которые вы можете удалить с помощью диспетчера шрифтов, перейдя на C: \ Windows \ Fonts: -

  • AdobeNaskh-Medium.otf
  • MyriadArabic-Bold.otf
  • MyriadArabic-BoldIt.otf
  • MyriadArabic-It.otf
  • MyriadArabic-Regular.otf

Надеется, что это помогает кому-то. Мне потребовалось несколько часов, чтобы исправить это «покачивание».

+1

Обязательно [проголосовать за ошибку] ​​(https://bugbase.adobe.com/index.cfm?event=bug&id=3503472) и подтолкнуть Adobe, чтобы исправить это .. или, по крайней мере, предоставить лучшее сообщение об ошибке. – Leigh

+1

@Leigh - Сделано ...! Приветствия за ссылку. – BizNuge

6

Я написал скрипт, который будет анализировать все файлы шрифтов в C: \ Windows \ Fonts и доложить о плохих:

<cfset fontobj = createobject("java","com.adobe.fontengine.fontmanagement.FontLoader")> 
<cfdirectory action="list" directory="c:\windows\fonts" name="fontdir"> 
<table border="1" style="border-collapse:collapse"> 
    <tr> 
    <th>Font Name:</th> 
    <th>Error</th> 
    </tr> 
    <cfloop query="fontdir"> 
    <cftry> 
    <cfset loaded = fontobj.load(createobject("java","java.net.URL").init("file:///C|/windows/fonts/#fontdir.name#"))> 
    <cfif arraylen(loaded) gt 0> 
     <cfset dummy="#loaded[1].getPlatformFontDescription()[1].toString()#" > 
    </cfif> 
    <cfcatch> 
     <cfif findnocase("platform",cfcatch.message)> 
     <tr> 
      <td><cfoutput>#fontdir.name#</cfoutput></td> 
      <td><cfoutput>#cfcatch.message#</cfoutput></td> 
     </tr> 
     </cfif> 
    </cfcatch> 
    </cftry> 
    </cfloop> 
</table> 
+0

Спасибо. Он работал очень хорошо. –

+0

Хорошая работа, спасибо! –