WePY
wepy-mall
wepy_ios_top
x-mall-miniprogram-wepy
一个基于wepy+redux+eslint+sass的类Vue开发风格的商城微信小程序项目。
jiezhang
Ufutx library
Ufutx party
shanbay-mina
wepy-books
vant-weapp
wepy-zanui-demo
wepy-weui-demo
WeUI 在 WePY 中的使用示例,同一份代码可以运行在小程序上和Web上
一个基于wepy+redux+eslint+sass的类Vue开发风格的商城微信小程序项目。
WeUI 在 WePY 中的使用示例,同一份代码可以运行在小程序上和Web上
因为wkhtmltopdf内置的为qt的webkit,已经很久不更新了,很多css3以及html5都支持不友好。
https://chromedevtools.github.io/devtools-protocol/tot/Page#method-printToPDF
chrome --headless --print-to-pdf=path/to/file.pdf https://example.com
参考:HTML to PDF conversion using Chrome pdfium?
html-pdf-chrome HTML to PDF converter via Chrome/Chromium.
chrome-html-to-pdf Converts HTML to PDF using Google Chrome
List of Chromium Command Line Switches
由于当前的chrome转换存在BUG,转换大文件时内存消耗特别大,生成的文件也比较大,测试了10多种方法后,最后决定采用PyQt5来做
#!/usr/bin/env python3
import sys
import argparse
from PyQt5.QtCore import QUrl, QMarginsF
from PyQt5.QtGui import QPageLayout, QPageSize
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import QApplication
class PrinterView(QWebEngineView):
def __init__(self, url, filename, do_preview, parent=None):
super(PrinterView, self).__init__(parent)
self.do_preview = do_preview
self.setUrl(QUrl(url))
self.setZoomFactor(1)
self.loadFinished.connect(self.load_finished)
self.filename = filename
def load_finished(self):
if self.do_preview:
self.show()
else:
pageLayout = QPageLayout(QPageSize(QPageSize.A5), QPageLayout.Portrait,
QMarginsF(0, 0, 0, 0))
self.page().printToPdf(self.filename, pageLayout)
self.page().pdfPrintingFinished.connect(on_pdf_finished)
def on_pdf_finished(result):
if result:
print(result)
QApplication.exit()
else:
QApplication.exit(1)
if __name__ == '__main__':
app = QApplication(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument("--url", "-i", help="Input URL (http://example.com, file:///home/user/example.html, ...)",
required=True)
parser.add_argument("--output", "-o", help="Write pdf to this file", required=True)
parser.add_argument("--preview", "-p", help="Open preview", action="store_true")
args = parser.parse_args()
a = PrinterView(args.url, args.output, args.preview)
sys.exit(app.exec_())
import sys
import argparse
from PyQt5.QtCore import QUrl, QMarginsF
from PyQt5.QtGui import QPageLayout, QPageSize
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEnginePage, QWebEngineProfile
from PyQt5.QtWidgets import QApplication
from PyQt5.QtPrintSupport import QPrinter, QPrintDialog
class PrinterView(QWebEngineView):
def __init__(self, url, filename, do_preview, parent=None):
self.printer = QPrinter()
self.printer.setPageSize(QPrinter.A5)
self.printer.setOrientation(QPrinter.Portrait)
self.printer.setOutputFormat(QPrinter.PdfFormat)
self.printer.setOutputFileName(filename)
self.printer.setPageMargins(0, 0, 0, 0, QPrinter.Millimeter)
super(PrinterView, self).__init__(parent)
self.do_preview = do_preview
self.page().profile().setHttpCacheMaximumSize(5 * 1024 * 1024 * 1024)
self.page().profile().setHttpCacheType(QWebEngineProfile.MemoryHttpCache)
self.setUrl(QUrl(url))
self.setZoomFactor(1)
self.loadFinished.connect(self.load_finished2)
self.filename = filename
def load_finished(self):
if self.do_preview:
self.show()
else:
pageLayout = QPageLayout(QPageSize(QPageSize.A5), QPageLayout.Portrait,
QMarginsF(0, 0, 0, 0))
self.page().printToPdf(self.filename, pageLayout)
self.page().pdfPrintingFinished.connect(on_pdf_finished)
def load_finished2(self):
self.show()
self.page().print(self.printer, on_pdf_finished)
def on_pdf_finished(result):
if result:
print(result)
QApplication.exit()
else:
QApplication.exit(1)
if __name__ == '__main__':
app = QApplication(sys.argv)
parser = argparse.ArgumentParser()
parser.add_argument("--url", "-i", help="Input URL (http://example.com, file:///home/user/example.html, ...)",
required=True)
parser.add_argument("--output", "-o", help="Write pdf to this file", required=True)
parser.add_argument("--preview", "-p", help="Open preview", action="store_true")
args = parser.parse_args()
a = PrinterView(args.url, args.output, args.preview)
sys.exit(app.exec_())
slimer-html-pdf – convert any HTML document to PDF format using slimerjs (Gecko)
def on_pdf_finished(self, result):
if result:
print(result + ', total ' + str(self.total))
else:
print("导出失败")
self.printed = self.printed + 1
print('导出第', self.printed, '本')
if self.printed < self.total:
self.print_book()
else:
print('开始合并')
merger = PdfFileMerger()
for index in range(0, self.total):
filepath = self.filename + '.' + str(index) + '.pdf'
merger.append(filepath)
print('合并第', index, '本')
merger.write(self.filename)
merger.close()
print('合并完成,开始清除临时文件')
# for index in range(0, self.total):
# filepath = self.filename + '.' + str(index) + '.pdf'
# os.remove(filepath)
print('清除临时文件完成')
QApplication.exit()
npm config set registry https://registry.npmmirror.com
npm install yarn -g
npm install n -g
n lts
node -v
yarn config get registry
yarn config set registry https://registry.npmmirror.com
yarn init -y
yarn add webpack
yarn add webpack -D
yarn upgrade webpack
yarn install
The module n makes version-management easy:
sudo npm install n -g
For the latest stable version:
sudo n stable
安装nrm
npm i nrm -g
查看内置的几个 npm 源的地址
nrm ls
切换到 cnpm:
nrm use cnpm
nrm ls
With Electron, creating a desktop application for your company or idea is easy. Initially developed for GitHub’s Atom editor, Electron has since been used to create applications by companies like Microsoft, Facebook, Slack, and Docker.
chat powered by the web. http://moose-team.github.io/friends/
A desktop app that scaffolds projects using Yeoman
A Set of React Components that Implement Google’s Material Design
Laverna is a JavaScript note taking application with Markdown editor and encryption support. Consider it like open source alternative to Evernote. https://laverna.cc/index.html
Simple app to time your Rubik’s Cube solves
https://github.com/pontusab/fastlane/