[Homework] Introduction to Java August 2015
Здравейте колеги,
Богомил май излиезе прав, че със всичкото първоначално сетване на environment - това ще се окаже най-сложното домашно.
Ето от мен малко задачи:
Problem 5.Print the Current Date and Time
Problem 7.Console-Based Compilation
Problem 8.* Sort Array of Strings
Problem 9.*** Generate a PDF by External Library
За 9-та задача гледах от тук, символите на боите накартите обаче не се display–ват в PDF-a, независимо от PDP-Viewer-a - пробвах Adobe Acrobat Pro, LibreOffice, OpenOffice, online PDF-viewer - боите на картите ги няма, ясво ще пробвам друга външна библиотека, с iText не стана.
Problem 10.JAR Archive + Console Execution
За jar файла, направих го с Eclipse:
File menu -> Export -> Java -> Runnable JAR file -> Next -> под Launch configuration От dropdown менюто си избирате двойка имена съответстващи на името на java файла о на проекта, в който той се намира; под Export destination -> Browse, избирате си папка за JAR файла, давате му име - аз написах DeckOfCardsPDF.jar -> под Library handling -> Extract required libraries into generated JAR -> Finish
Скрипта: отварям нов txt файл, пиша в него само java -jar DeckOfCardsPDF.jar
save-вам файла, сменям му екстеншъна на .bat, double click и той прави нов pdf - т.е. работи.
Тук има една особеност - локалната версия на java трябва да е 1.8 и cmd трябва да знае пътя до нея - аз се забавих много с това, защото имам инсталирана java 1.8, ъпдейтната навсякъде, но като напиша в cmd java -version - ми даваше все 1.7..... накрая открих, че в Computer -> Properties -> Advanced System Settings -> Environment Variables -> User variables for Katya -“ Path и System variables -> Path съм била имала много наблъскани paths едно след друго, част от тях сочещи към java 1.7, и затова комадата java -jar DeckOfCardsPDF.jar ми даваше грешка.
сложих: C:\Program Files\Java\jdk1.8.0_60\bin;C:\Program C:\Program Files\Java\jre1.8.0_60\bin; и в User и в System Path, изтрих всичко сочещо към java 1.7, и чак след като рестартирах лаптопа cmd откри новата java 1.8 и почна да ми рънва JAR file-a.
Problem 11.* Create a Windows EXE
- това видео https://www.youtube.com/watch?v=6_gqWRkw0EY
ЕДИТ: за символите на боите на картите - Решено!
проблемът беше скапано times.ttf копие от интернет - затова
BaseFont baseFont = BaseFont.createFont("ARIAL.TTF", BaseFont.IDENTITY_H, true); с ARIAL.TTF копие от локалната fonts папка на компютъра работи,
BaseFont baseFont = BaseFont.createFont("c:/windows/fonts/times.ttf", BaseFont.IDENTITY_H, true); сочещо към локалната fonts папка на компютъра също работи; times.ttf не успях да го копирам от fonts папката, може би защото името на файла включва spaces?! Не знам.
Катя
Здравей Юлияне,
решението ти е мега-advanced! Много ми хареса!
За encoding-a обаче - това тука показва че вторият параметър подава encoding,
createFont(String name, String encoding, boolean embedded)
а в решението, което аз ползвам, encoding е подаден точно като при теб
аз: BaseFont baseFont = BaseFont.createFont("times.ttf", BaseFont.IDENTITY_H, true);
ти: font = BaseFont.createFont("c:/windows/fonts/arialbd.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
важната разлика се оказа подаването на самия фонт - ако се извиква от fonts folder-a на локалния компютър - печата unicode символи, ако се подава през папката на самия проект, дори копието да е взето от папката fonts на локалния компютър - не работи!
bottom line:
това работи: BaseFont baseFont = BaseFont.createFont("c:/windows/fonts/times.ttf", BaseFont.IDENTITY_H, true);
това не работи: BaseFont baseFont = BaseFont.createFont("times.ttf", BaseFont.IDENTITY_H, true);
засега нямам обяснение защо е така.....
Здравей отново! Радвам се, че ти допада решението ми. Късно забелязах, че и ти използваш същия енкодинг, предположих, че е от това, защото аз имах проблеми по същия начин, просто уникод знаците не се показваха. Преди мъничко опитах с фонт в проекта и пак работеше. Опитах и с таблици, както е при теб, но отново си работеше.
BaseFont.createFont("fonts/times.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED); - работи.
font = BaseFont.createFont("times.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED); - с преместен фонт директно в 'src' също работи.
Използвам Eclipse Mars и iTextPdf 5.5.6, ако въобще има общо с проблема.
@inspix,
Eclipse Version: Mars Release (4.5.0), iTextPdf 5.5.6
- с преместен фонт директно в 'src' НЕ работи:
font = BaseFont.createFont("times.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
font = BaseFont.createFont("times.ttf",BaseFont.IDENTITY_H,true);
font = BaseFont.createFont("times.ttf",BaseFont.IDENTITY_H,false);
с никакво налучкване не работи.....
това работи
BaseFont baseFont = BaseFont.createFont("c:/windows/fonts/times.ttf", BaseFont.IDENTITY_H, true);
а times.ttf в проекта не ми е копие от локалната папка - да позвам скапано times.ttf копие от интернет?!!
Точно! Скапано times.ttf копие от интернет е бил проблема!
с ARIAL.TTF копие от локалната папка:
BaseFont baseFont = BaseFont.createFont("ARIAL.TTF", BaseFont.IDENTITY_H, true);
работи!!!!!
:)