123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.CRPDF = void 0;
- var _utils = require("../../utils");
- var _crProtocolHelper = require("./crProtocolHelper");
- /**
- * Copyright 2017 Google Inc. All rights reserved.
- * Modifications copyright (c) Microsoft Corporation.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- const PagePaperFormats = {
- letter: {
- width: 8.5,
- height: 11
- },
- legal: {
- width: 8.5,
- height: 14
- },
- tabloid: {
- width: 11,
- height: 17
- },
- ledger: {
- width: 17,
- height: 11
- },
- a0: {
- width: 33.1,
- height: 46.8
- },
- a1: {
- width: 23.4,
- height: 33.1
- },
- a2: {
- width: 16.54,
- height: 23.4
- },
- a3: {
- width: 11.7,
- height: 16.54
- },
- a4: {
- width: 8.27,
- height: 11.7
- },
- a5: {
- width: 5.83,
- height: 8.27
- },
- a6: {
- width: 4.13,
- height: 5.83
- }
- };
- const unitToPixels = {
- 'px': 1,
- 'in': 96,
- 'cm': 37.8,
- 'mm': 3.78
- };
- function convertPrintParameterToInches(text) {
- if (text === undefined) return undefined;
- let unit = text.substring(text.length - 2).toLowerCase();
- let valueText = '';
- if (unitToPixels.hasOwnProperty(unit)) {
- valueText = text.substring(0, text.length - 2);
- } else {
- // In case of unknown unit try to parse the whole parameter as number of pixels.
- // This is consistent with phantom's paperSize behavior.
- unit = 'px';
- valueText = text;
- }
- const value = Number(valueText);
- (0, _utils.assert)(!isNaN(value), 'Failed to parse parameter value: ' + text);
- const pixels = value * unitToPixels[unit];
- return pixels / 96;
- }
- class CRPDF {
- constructor(client) {
- this._client = void 0;
- this._client = client;
- }
- async generate(options) {
- const {
- scale = 1,
- displayHeaderFooter = false,
- headerTemplate = '',
- footerTemplate = '',
- printBackground = false,
- landscape = false,
- pageRanges = '',
- preferCSSPageSize = false,
- margin = {}
- } = options;
- let paperWidth = 8.5;
- let paperHeight = 11;
- if (options.format) {
- const format = PagePaperFormats[options.format.toLowerCase()];
- (0, _utils.assert)(format, 'Unknown paper format: ' + options.format);
- paperWidth = format.width;
- paperHeight = format.height;
- } else {
- paperWidth = convertPrintParameterToInches(options.width) || paperWidth;
- paperHeight = convertPrintParameterToInches(options.height) || paperHeight;
- }
- const marginTop = convertPrintParameterToInches(margin.top) || 0;
- const marginLeft = convertPrintParameterToInches(margin.left) || 0;
- const marginBottom = convertPrintParameterToInches(margin.bottom) || 0;
- const marginRight = convertPrintParameterToInches(margin.right) || 0;
- const result = await this._client.send('Page.printToPDF', {
- transferMode: 'ReturnAsStream',
- landscape,
- displayHeaderFooter,
- headerTemplate,
- footerTemplate,
- printBackground,
- scale,
- paperWidth,
- paperHeight,
- marginTop,
- marginBottom,
- marginLeft,
- marginRight,
- pageRanges,
- preferCSSPageSize
- });
- return await (0, _crProtocolHelper.readProtocolStream)(this._client, result.stream);
- }
- }
- exports.CRPDF = CRPDF;
|