diff --git a/client/homebrew/pageContainer/pageContainer.jsx b/client/homebrew/pageContainer/pageContainer.jsx index 5a79390..c876907 100644 --- a/client/homebrew/pageContainer/pageContainer.jsx +++ b/client/homebrew/pageContainer/pageContainer.jsx @@ -2,6 +2,8 @@ var React = require('react'); var _ = require('lodash'); var cx = require('classnames'); +var PHBPage = require('./phbPage/phbPage.jsx'); + var Markdown = require('marked'); var PageContainer = React.createClass({ @@ -13,7 +15,7 @@ var PageContainer = React.createClass({ renderPages : function(){ return _.map(this.props.text.split('\\page'), (pageText, index) => { - return
+ return }) }, diff --git a/client/homebrew/phb/phbPage/phbPage.jsx b/client/homebrew/phb/phbPage/phbPage.jsx new file mode 100644 index 0000000..bf2b5e7 --- /dev/null +++ b/client/homebrew/phb/phbPage/phbPage.jsx @@ -0,0 +1,14 @@ +var React = require('react'); + +var PhbPage = React.createClass({ + getDefaultProps: function() { + return { + content : "" + }; + }, + render : function(){ + return
+ } +}); + +module.exports = PhbPage; diff --git a/client/homebrew/phb/phbPage/phbPage.less b/client/homebrew/phb/phbPage/phbPage.less new file mode 100644 index 0000000..7d42f7b --- /dev/null +++ b/client/homebrew/phb/phbPage/phbPage.less @@ -0,0 +1,366 @@ +@font-face { + font-family : BookInsanity; + src : url('/assets/homebrew/assets/Bookinsanity.otf'); +} +@font-face { + font-family : BookInsanityBold; + src : url('/assets/homebrew/assets/Bookinsanity Bold.otf'); +} +@font-face { + font-family : BookInsanityItalic; + src : url('/assets/homebrew/assets/Bookinsanity Italic.otf'); +} +@font-face { + font-family : BookInsanityBoldItalic; + src : url('/assets/homebrew/assets/Bookinsanity Bold Italic.otf'); +} +@font-face { + font-family : ScalaSans; + src : url('/assets/homebrew/assets/Scaly Sans.otf'); +} +/* +@font-face { + font-family : ScalaSansBold; + src : url('/assets/homebrew/assets/Scala Sans Bold.ttf'); +} +*/ +@font-face { + font-family : ScalaSansSmallCaps; + src : url('/assets/homebrew/assets/Scala Sans SmallCaps.ttf'); +} +@font-face { + font-family : Solbera; + src : url('/assets/homebrew/assets/Solbera Imitation.otf'); +} +@font-face { + font-family : MrEaves; + src : url('/assets/homebrew/assets/MrsEavesSmallCaps_Regular.ttf') format('truetype'), + url('/assets/homebrew/assets/Mr Eaves Small Caps.otf') format('otf'); +} +.phb{ + @background : #f2ece4; + @green : #e0e5c1; + @headerUnderline : #c9ad6a; + @horizontalRule : #9c2b1b; + @header : #58180D; + box-sizing : border-box; + height : 27.5cm; + width : 21cm; + padding : 1.0cm 1.7cm; + column-count : 2; + column-fill : auto; + column-gap : 1cm; + column-width : 8cm; + background-color: #EEE5CE; + background-image : url('/assets/homebrew/assets/PHB-background.png'); + -webkit-column-count : 2; + -moz-column-count : 2; + -webkit-column-width : 8cm; + -moz-column-width : 8cm; + -webkit-column-gap : 1cm; + text-rendering : optimizeLegibility; + position : relative; + overflow: hidden; + z-index : 15; + + + img{ + z-index : -1; + } + + //Page Accents + &:after{ + content : ""; + position: absolute; + height: 50px; + width: 100%; + bottom : 0px; + left: 0px; + background-size: cover; + width : 100%; + background-image : url('/assets/homebrew/assets/accent.png'); + } + + //Avoid breaking up + p,ul,blockquote,table{ + -webkit-column-break-inside : avoid; + -moz-column-break-inside : avoid; + -o-column-break-inside : avoid; + -ms-column-break-inside : avoid; + column-break-inside : avoid; + z-index : 15; + } + + p,ul{ + strong{ + font-family : BookInsanityBold; + em{ + font-family : BookInsanityBoldItalic; + } + } + em{ + font-family : BookInsanityItalic; + } + } + p { + padding-bottom : 0.8em; + font-family : BookInsanity; + font-size : 9pt; + line-height : 1.3em; + &+p{ + margin-top : -0.8em; + text-indent : 1em; + } + } + ul{ + margin-bottom : 0.8em; + font-family : BookInsanity; + font-size : 9pt; + line-height : 1.3em; + list-style-position : inside; + list-style-type : disc; + } + + + //Full Spell casting table + h5+hr+table{ + -webkit-column-span : all; + column-span : all; + background-color: white; + border-image-source: url('/assets/homebrew/assets/frame_border.png'); + border-image-slice: 150 200 150 200; + border-image-width: 47px; + border-image-outset: 37px 17px; + border-image-repeat: round; + margin-bottom: 50px; + border-collapse: separate; + border: initial; + padding-top: 10px; + margin-top: -5px; + + } + + + table{ + width : 100%; + margin-bottom : 1em; + font-family : ScalaSans; + font-size : 10pt; + thead{ + font-weight : 800; + th{ + padding-bottom : 0.3em; + } + } + tbody{ + tr{ + td{ + padding : 0.2em 0em; + } + &:nth-child(odd){ + background-color : @green; + } + } + } + } + hr{ + visibility: hidden; + //border : none; + margin: 0px; + } + + //Fancy List of things + hr+ul{ + list-style-type: none; + text-indent: -1em; + padding-left: 1em; + + //margin-top: -0.5em; + margin-bottom: 0.5em; + } + + //Column Break + pre{ + visibility: hidden; + -webkit-column-break-after: always; + } + + //Monster Stat block + hr+blockquote{ + position : relative; + background-color: #FDF1DC; + border : none; + + h2{ + margin-bottom: 0px; + &+p{ + padding-bottom: 0px; + } + } + h3{ + font-family: ScalaSans; + font-weight: 400; + border-bottom: 1px solid @header; + } + + ul{ + list-style-type: none; + font-family: ScalaSans; + color : @header; + font-size: 10pt; + text-indent: -1em; + padding-left: 1em; + strong{ + font-family: ScalaSans; + font-weight: 800; + } + } + + // Monster Ability table + hr+table{ + -webkit-column-span : 1; + column-span : 1; + background-color: transparent; + border-image: none; + margin: 0; + thead{ + tr{ + //background-color: transparent; + } + } + tbody{ + tr:nth-child(odd), tr:nth-child(even){ + background-color: transparent; + } + } + } + table{ + color : @header; + } + + p+p{ + margin-top : 0em; + text-indent : 0em; + padding-bottom: 0.5em; + } + + + + //Maybe move this to be built in + hr{ + visibility: visible; + margin: 8px 0px; + + border-color : transparent; + position: relative; + @height : 3px; + &:after, &:before{ + content : ""; + position: absolute; + width: 100%; + height: @height; + left: 0px; + } + &:before{ + top : -@height; + background: linear-gradient(to right top, @horizontalRule 40%, transparent 50%) + } + &:after{ + top: 0px; + background: linear-gradient(to right bottom, @horizontalRule 40%, transparent 50%) + } + + } + + //Borders + &:after, &:before{ + content : ""; + position: absolute; + background-color : #E69A28; + border: 1px solid black; + height : 4px; + width : 100%; + padding : 0px 3px; + } + &:before{ + top : 0px; + left : -3px; + } + &:after{ + bottom : 0px; + left : -3px; + } + } + + + //Note + blockquote{ + box-sizing : border-box; + margin-bottom : 1em; + padding : 5px 10px; + background-color : @green; + font-family : ScalaSans; + border-top : 2px black solid; + border-bottom : 2px black solid; + box-shadow : 1px 4px 14px #888; + + p, ul{ + font-family : ScalaSans; + font-size : 10pt; + line-height : 1.1em; + em{ + font-family : ScalaSans; + font-style : italic; + } + strong{ + font-weight : 800; + font-family : ScalaSans; + em{ + font-style : italic; + font-weight : 800; + } + } + } + } + pre{ + } + h1,h2,h3,h4{ + margin-top : 0.2em; + margin-bottom : 0.2em; + font-family : MrEaves; + font-weight : 800; + color : @header; + } + h1{ + column-span : all; + font-size : 28pt; + -webkit-column-span : all; + &+p{ + &::first-letter{ + float: left; + margin-top: 0.4em; + margin-bottom: 0.4em; + font-family: Solbera; + font-size: 10em; + color : #222; + } + } + } + h2{ + font-size : 20pt; + } + h3{ + font-size : 15pt; + border-bottom : 2px solid @headerUnderline; + } + h4{ + margin-bottom : 0.00em; + font-size : 12pt; + } + h5{ + margin-bottom : 0.2em; + font-family : ScalaSansSmallCaps; + font-size : 13pt; + font-weight : 900; + } +} \ No newline at end of file diff --git a/server/Server files go here b/client/homebrew/phb/phb_style.less similarity index 100% rename from server/Server files go here rename to client/homebrew/phb/phb_style.less diff --git a/client/homebrew/phbStyle/phb.backup.less b/client/homebrew/phbStyle/phb.backup.less index ce3a56d..2bab0c6 100644 --- a/client/homebrew/phbStyle/phb.backup.less +++ b/client/homebrew/phbStyle/phb.backup.less @@ -9,6 +9,7 @@ margin-bottom: 30px; } } +<<<<<<< HEAD:client/homebrew/phbStyle/phb.backup.less @font-face { font-family : BookInsanity; src : url('/assets/homebrew/assets/Bookinsanity.otf'); @@ -390,4 +391,6 @@ font-size : 13pt; font-weight : 900; } -} \ No newline at end of file +} +======= +>>>>>>> setup test file with phantomjs, no luck though:client/homebrew/phb/phb.less diff --git a/gulpfile.js b/gulpfile.js index ded4eaf..39db0b1 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -5,7 +5,7 @@ var gulp = require("gulp"); var gulp = vitreumTasks(gulp, { - entryPoints: ["./client/naturalCrit", "./client/homebrew", "./client/admin"], + entryPoints: ["./client/naturalCrit", "./client/homebrew", "./client/admin", "./client/homebrew/phb/phbPage"], DEV: true, diff --git a/package.json b/package.json index 29b6291..8c60bd1 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "classnames": "^2.2.0", "express": "^4.13.3", "gulp": "^3.9.0", + "html-pdf": "^1.4.0", "jsoneditor": "^4.2.1", "lodash": "^3.10.1", "marked": "^0.3.5", diff --git a/server/businesscard.pdf b/server/businesscard.pdf new file mode 100644 index 0000000..3f6db6b Binary files /dev/null and b/server/businesscard.pdf differ diff --git a/server/pdfConvert.js b/server/pdfConvert.js new file mode 100644 index 0000000..2878878 --- /dev/null +++ b/server/pdfConvert.js @@ -0,0 +1,26 @@ +var pdf = require('html-pdf'); +var Markdown = require('marked'); + +var style = require('fs').readFileSync('../build/phbPage/bundle.css', 'utf8'); + +style = ""; + + function replaceAll(str, find, replace) { + return str.replace(new RegExp(find, 'g'), replace); + } + +style = replaceAll(style, '/assets/homebrew/assets/', 'http://www.naturalcrit.com/assets/homebrew/assets/'); + +var content = Markdown('# oh hey \n welcome! ##### test'); + + +var html = "" + style + "
"+ content +"
" + +console.log(html); + + +pdf.create(html).toFile('./pdfs/businesscard.pdf', function(err, res){ + console.log(err); + console.log(res.filename); +}); \ No newline at end of file diff --git a/server/pdfs/businesscard.pdf b/server/pdfs/businesscard.pdf new file mode 100644 index 0000000..3f2105d Binary files /dev/null and b/server/pdfs/businesscard.pdf differ