Pdfkit css

P. S. Có lẽ điều này chỉ áp dụng khi sử dụng -after [và cả những gì bạn có thể đang làm với các

khác trên trang], nhưng tôi thấy rằng tôi phải tăng thêm lớp CSS như sau

@media print {
.pagebreak {
clear: both;
page-break-after: always;
}
}

2. Đối với PDFKit [Andrew]

Thêm ngắt trang bằng html cho PDFKit trong Swift

Bằng cách thay đổi nó thành page-break-before thay vì page-break-after, có vẻ như nó hoạt động. Đây là những gì tôi đã thay đổi contextString của bạn thành, tôi đã sử dụng một chuỗi nhiều dòng vì nó dễ đọc hơn và cung cấp cho nó một số nội dung rõ ràng hơn

Trong #10stips hôm nay [nơi bạn tìm hiểu cách giải quyết các vấn đề về mã hóa trong vòng 10 giây], chúng ta sẽ nói về viên ngọc PDFKit đáng yêu

Tôi đã sử dụng nó từ khi còn nhỏ [ehm không. kể từ khi viên ngọc ra đời khoảng 12 năm trước]. Nó tạo các tệp PDF bằng cách sử dụng HTML + CSS cũ đơn giản

PDFKit yêu cầu thư viện wkhtmltopdf hiển thị HTML bằng Webkit

Giờ đây, Webkit là một công cụ kết xuất và tùy thuộc vào cấu hình hệ thống của bạn, bạn có thể gặp phải các sự cố tương thích khi tải tài nguyên hoặc lỗi mạng không mong muốn có thể khiến bạn phát điên, đặc biệt khi bạn có các trang HTML có nhiều hình ảnh

PDFKit::ImproperWkhtmltopdfExitStatus UnknownNetworkError
Exit with code 1 due to network error: UnknownNetworkError
Exit with code 1 due to network error: ContentNotFoundError
Warning Failed to load

Vào chế độ toàn màn hình Thoát chế độ toàn màn hình

Về cơ bản, wkhtmltopdf không tải được các tệp CSS, JS hoặc IMG

Có một số yếu tố đóng vai trò

  • PDFkit 0. 13 dường như hoạt động, trong khi 0. 12. 5 không
  • tải hình ảnh từ máy chủ web bằng TLSv1, nó hoạt động
  • trên một máy chủ hiện đại với TLS 1. 2, nó bị hỏng nhưng không phải cho tất cả các tài nguyên
  • tốt hơn nên sử dụng đường dẫn tuyệt đối thay vì đường dẫn tương đối
  • ai biết ai quan tâm. ?. ?. ?

Vì vậy, tôi cung cấp cho bạn một giải pháp nhanh chóng và cuối cùng

Sẳn sàng?

Tắt máy tính và đi lang thang. Nghiêm túc mà nói, nó giúp ích cho sức khỏe tinh thần và thể chất của bạn

Nhưng nếu bạn vẫn quan tâm đến việc giải quyết vấn đề, đây là những gì tôi đề xuất

  1. Nếu có thể, hãy cập nhật wkhtmltopdf của bạn lên phiên bản mới nhất
  2. Kiểm tra xem các tài nguyên bên ngoài trong HTML của bạn có đến từ máy chủ TLSv1 hoặc TLSv2 hay không [các phiên bản mới hơn của wkhtmltopdf hoạt động tốt nhất với TLSv2]
  3. Cố gắng chuyển URL từ HTTPS sang HTTP [và ngược lại]
  4. Đặt config.default_options[:ignore_load_errors] = true trong PDFKit của bạn. cấu hình khối

Rõ ràng, việc sử dụng HTTP so với HTTPS gây ra mối lo ngại về bảo mật. Thật không may, chúng tôi có rất ít lựa chọn và tôi là người ưu tiên sự tỉnh táo hơn là sửa lỗi

def save_pdf[tự, html]. người chọn = Gtk. FileChooserDialog["Xuất PDF", Không có, Gtk. Trình chọn tệpHành động. LƯU, [Gtk. STOCK_CANCEL, Gtk. Loại phản hồi. HỦY, Gtk. STOCK_OK, Gtk. Loại phản hồi. được]] mình. set_file_chooser_path[bộ chọn] pdf_filter = Gtk. Bộ lọc tệp [] pdf_filter. add_pattern["*. pdf"] pdf_filter. bộ chọn set_name["Tệp PDF"]. bộ chọn add_filter[pdf_filter]. phản hồi set_do_overwrite_confirmation[True] = bộ chọn. run[] nếu phản hồi == Gtk. Loại phản hồi. VÂNG. file_name = bộ chọn. get_filename[] nếu không phải file_name. endwith[". pdf"]. tên_tệp += ". pdf" hãy thử. pdfkit. from_string[html, file_name, options= {'im lặng'. '', 'kích thước trang'. 'Thư', 'lề trên'. '0. 75in', 'lề-phải'. '0. 75in', 'đáy cận biên'. '0. 75in', 'lề trái'. '0. 75in', 'mã hóa'. "UTF-8", 'javascript-delay'. '550', 'không có đường viền'. Không}] ngoại trừ. cố gắng. # Không thành công, vì vậy hãy thử mà không có tùy chọn pdfkit. from_string[html, tên_tệp] ngoại trừ. # Xuất Pdf không thành công, hiển thị thông báo cảnh báo nếu không tự xuất. pdf_error_warning. bản thân. pdf_error_warning = True print["\nLỗi đáng chú ý. \tPDF xuất không thành công. "] pdf_fail_dialog = Gtk. MessageDialog[tự, 0, Gtk. Loại tin nhắn. LỖI, Gtk. Nút Loại. HỦY, "XUẤT PDF KHÔNG THÀNH CÔNG"] pdf_fail_dialog. format_secondary_text["Xuất tập tin sang PDF không thành công. "] pdf_fail_dialog. chạy[] pdf_fail_dialog. tiêu diệt [] phản hồi elif == Gtk. Loại phản hồi. SỰ HỦY BỎ. người chọn đường chuyền. tự hủy []. cửa sổ. set_sensitive[Đúng]

PDFKit là một thư viện tạo tài liệu PDF cho Node và trình duyệt giúp tạo các tài liệu phức tạp, nhiều trang, có thể in được dễ dàng. API bao gồm khả năng kết nối và bao gồm cả chức năng cấp thấp cũng như trừu tượng cho chức năng cấp cao hơn. API PDFKit được thiết kế đơn giản, vì vậy việc tạo các tài liệu phức tạp thường đơn giản bằng một vài lệnh gọi hàm

Kiểm tra một số tài liệu và ví dụ để xem cho chính mình. Bạn cũng có thể đọc hướng dẫn dưới dạng PDF tự tạo với đầu ra mẫu được hiển thị nội tuyến. Nếu bạn muốn xem nó được tạo như thế nào, hãy xem README trong thư mục tài liệu

Bạn cũng có thể dùng thử bản demo tương tác trong trình duyệt của PDFKit tại đây

Cài đặt

Cài đặt sử dụng trình quản lý gói npm. Chỉ cần gõ lệnh sau sau khi cài đặt npm

npm install pdfkit

Đặc trưng

  • Đồ họa vector
    • API giống như canvas HTML5
    • hoạt động đường dẫn
    • Trình phân tích đường dẫn SVG để tạo đường dẫn dễ dàng
    • phép biến hình
    • Độ dốc tuyến tính và xuyên tâm
  • Chữ
    • gói hàng
    • căn chỉnh văn bản
    • danh sách gạch đầu dòng
  • Nhúng phông chữ
    • Hỗ trợ TrueType [. ttf], OpenType [. otf], Bộ sưu tập WOFF, WOFF2, TrueType [. ttc] và Datafork TrueType [. dfont] phông chữ
    • Tập hợp phông chữ
    • Xem bộ phông chữ để biết thêm chi tiết về hỗ trợ bố cục glyph nâng cao
  • nhúng hình ảnh
    • Hỗ trợ các tệp JPEG và PNG [bao gồm cả PNG được lập chỉ mục và PNG có độ trong suốt]
  • Chú thích
    • liên kết
    • ghi chú
    • Điểm nổi bật
    • gạch chân
    • vân vân
  • AcroForms
  • phác thảo
  • bảo mật PDF
    • mã hóa
    • Đặc quyền truy cập [in, sao chép, sửa đổi, chú thích, điền biểu mẫu, truy cập nội dung, lắp ráp tài liệu]
  • Hỗ trợ khả năng truy cập [nội dung được đánh dấu, cấu trúc logic, PDF được gắn thẻ, PDF/UA]

Sắp có

  • Các mẫu lấp đầy
  • API cấp cao hơn để tạo bảng và sắp xếp nội dung
  • Nhiều tối ưu hóa hiệu suất hơn
  • Tuyệt vời hơn nữa, có lẽ được viết bởi bạn. Vui lòng rẽ nhánh kho lưu trữ này và gửi cho tôi các yêu cầu kéo

Thí dụ

const PDFDocument = require['pdfkit'];
const fs = require['fs'];

// Create a document
const doc = new PDFDocument[];

// Pipe its output somewhere, like to a file or HTTP response
// See below for browser usage
doc.pipe[fs.createWriteStream['output.pdf']];

// Embed a font, set the font size, and render some text
doc
  .font['fonts/PalatinoBold.ttf']
  .fontSize[25]
  .text['Some text with an embedded font!', 100, 100];

// Add an image, constrain it to a given size, and center it vertically and horizontally
doc.image['path/to/image.png', {
  fit: [250, 300],
  align: 'center',
  valign: 'center'
}];

// Add another page
doc
  .addPage[]
  .fontSize[25]
  .text['Here is some vector graphics...', 100, 100];

// Draw a triangle
doc
  .save[]
  .moveTo[100, 150]
  .lineTo[100, 250]
  .lineTo[200, 250]
  .fill['#FF3300'];

// Apply some transforms and render an SVG path with the 'even-odd' fill rule
doc
  .scale[0.6]
  .translate[470, -380]
  .path['M 250,75 L 323,301 131,161 369,161 177,301 z']
  .fill['red', 'even-odd']
  .restore[];

// Add some text with annotations
doc
  .addPage[]
  .fillColor['blue']
  .text['Here is a link!', 100, 100]
  .underline[100, 100, 160, 27, { color: '#0000FF' }]
  .link[100, 100, 160, 27, '//google.com/'];

// Finalize PDF file
doc.end[];

Đầu ra PDF từ ví dụ này [với một vài bổ sung] cho thấy sức mạnh của PDFKit — tạo ra các tài liệu phức tạp với một lượng mã rất nhỏ. Để biết thêm thông tin, hãy xem thư mục demo và hướng dẫn lập trình PDFKit

Sử dụng trình duyệt

Có ba cách để sử dụng PDFKit trong trình duyệt

Ngoài PDFKit, bạn sẽ cần một nơi nào đó để truyền đầu ra tới. HTML5 có đối tượng Blob có thể được sử dụng để lưu trữ dữ liệu nhị phân và nhận URL tới dữ liệu này để hiển thị đầu ra PDF bên trong khung nội tuyến hoặc tải lên máy chủ, v.v. Để lấy Blob từ đầu ra của PDFKit, bạn có thể sử dụng mô-đun blob-stream

Ví dụ sau sử dụng Browserify hoặc webpack để tải PDFKitblob-stream. Xem here và here để biết ví dụ về cách sử dụng phiên bản dựng sẵn

// require dependencies
const PDFDocument = require['pdfkit'];
const blobStream = require['blob-stream'];

// create a document the same way as above
const doc = new PDFDocument[];

// pipe the document to a blob
const stream = doc.pipe[blobStream[]];

// add your content to the document here, as usual

// get a blob when you're done
doc.end[];
stream.on['finish', function[] {
  // get a blob you can do whatever you like with
  const blob = stream.toBlob['application/pdf'];

  // or get a blob URL for display in the browser
  const url = stream.toBlobURL['application/pdf'];
  iframe.src = url;
}];

Bạn có thể xem bản demo tương tác trong trình duyệt của PDFKit tại đây

Lưu ý rằng để Trình duyệt dự án bằng PDFKit, bạn cần cài đặt mô-đun brfs với npm, được sử dụng để tải dữ liệu phông chữ tích hợp vào gói. Nó được liệt kê là devDependency trong PDFKit's package.json, vì vậy nó không được cài đặt theo mặc định cho người dùng Node. Nếu bạn quên cài đặt, Browserify sẽ in thông báo lỗi

Pdfkit có hỗ trợ CSS không?

Tạo tệp PDF bằng HTML+CSS cũ đơn giản . Sử dụng wkhtmltopdf trên phần phụ trợ hiển thị HTML bằng Webkit.

Làm cách nào để sử dụng HTML trong Pdfkit?

# chuyển đổi tập tin html sang tập tin pdf. pdfkit. from_file['mẫu. html', 'đầu ra. .
nhập pdfkit
# định cấu hình pdfkit để trỏ đến cài đặt wkhtmltopdf của chúng tôi
cấu hình = pdfkit. cấu hình [wkhtmltopdf = r"C. \\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf. exe"]
# chuyển url sang file pdf

Làm cách nào để sử dụng Pdfkit trong Python?

Tạo tệp PDF bằng Thư viện Python – PDFKit . Để sử dụng dòng lệnh trong Python, JazzCore đã phát triển PDFKit – một trình bao bọc cho tiện ích wkhtmltopdf. Sau khi cài đặt wkhtmltopdf và PDFKit, bước tiếp theo là tạo tệp Python để tạo tệp PDF từ URL. run the command in the console to generate PDFs. To use the command-line in Python, JazzCore developed PDFKit – a wrapper for wkhtmltopdf utility. Once wkhtmltopdf and PDFKit are installed, the next step is to create a Python file to generate a PDF from a URL.

Pdfkit hoạt động như thế nào?

PDFKit là thư viện tạo tài liệu PDF cho Node và trình duyệt giúp tạo các tài liệu phức tạp, nhiều trang, có thể in được dễ dàng . API bao gồm khả năng kết nối và bao gồm cả chức năng cấp thấp cũng như trừu tượng cho chức năng cấp cao hơn.

Chủ Đề