pdf-storage icon indicating copy to clipboard operation
pdf-storage copied to clipboard

Apple M1/M2 processors can't generate PDF's

Open ducho opened this issue 1 year ago • 1 comments

Hi! I'm trying to integrate your library into a project, but without success. Even though request and response are working fine, but I'm getting empty PDFs. I tried to change the PdfStorageType in the configuration to local, the html file was saved, but the pdf was not. My current config:

web_pdf:
    container_name: web_pdf_storage
    image: ptcos/pdf-storage
    ports:
      - '5001:5000'
    platform: linux/amd64
    environment:
      ASPNETCORE_ENVIRONMENT: Development
      BaseUrl: http://localhost:5000/
    volumes:
      - ../cdn/data:/data
      - ./docker/appsettings.json:/app/appsettings.json
    networks:
      - satur-proxy

appsettings.json

{
  "DbType": "inMemory",
  "MqType": "inMemory",
  "PdfStorageType": "inMemory",
  "LocalStorage": {
    "Folder": "/data"
  },
  "ApiAuthentication": {
    "Keys": [ "apikeyfortesting" ]
  },
  "Hangfire": {
    "AllowedIpAddresses": ["*"]
  }
}

response

array:1 [▼
  0 => array:5 [▼
    "pdfUri" => "http://localhost:5000/v1/pdf/guide/409338d8fed44790b6cdaa9946e7aac3.pdf"
    "htmlUri" => "http://localhost:5000/v1/pdf/guide/409338d8fed44790b6cdaa9946e7aac3.html"
    "id" => "409338d8fed44790b6cdaa9946e7aac3"
    "groupId" => "guide"
    "data" => []
  ]
]

curl

curl \
  --compressed \
  --request POST \
  --url 'http://web_pdf_storage:5000/v1/pdf/guide' \
  --header 'Authorization: ApiKey apikeyfortesting' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json-patch+json' \
  --header 'User-Agent: Symfony HttpClient/Curl' \
  --header 'Accept-Encoding: gzip' \
  --header 'Content-Length: 5117' \
  --data '{"html":"\u003Chtml lang=\u0022en\u0022\u003E\n\u003Chead\u003E\n    \u003Cmeta charset=\u0022utf-8\u0022\u003E\n    \u003Cmeta name=\u0022viewport\u0022 content=\u0022width=device-width, initial-scale=1\u0022\u003E\n    \u003Ctitle\u003EBootstrap demo\u003C\/title\u003E\n    \u003Clink href=\u0022https:\/\/cdn.jsdelivr.net\/npm\/[email protected]\/dist\/css\/bootstrap.min.css\u0022 rel=\u0022stylesheet\u0022 integrity=\u0022sha384-rbsA2VBKQhggwzxH7pPCaAqO46MgnOM80zW1RWuH61DGLwZJEdK2Kadq2F9CUG65\u0022 crossorigin=\u0022anonymous\u0022\u003E\n    \u003Clink rel=\u0022stylesheet\u0022 href=\u0022styles.css\u0022\u003E\n\u003C\/head\u003E\n\u003Cbody\u003E\n\u003Cnav class=\u0022navbar navbar-expand-lg navbar-dark bg-dark\u0022\u003E\n    \u003Cdiv class=\u0022container\u0022\u003E\n        \u003Ca class=\u0022navbar-brand\u0022 href=\u0022#\u0022\u003ENavbar\u003C\/a\u003E\n        \u003Cbutton class=\u0022navbar-toggler\u0022 type=\u0022button\u0022 data-bs-toggle=\u0022collapse\u0022 data-bs-target=\u0022#navbarSupportedContent\u0022 aria-controls=\u0022navbarSupportedContent\u0022 aria-expanded=\u0022false\u0022 aria-label=\u0022Toggle navigation\u0022\u003E\n            \u003Cspan class=\u0022navbar-toggler-icon\u0022\u003E\u003C\/span\u003E\n        \u003C\/button\u003E\n        \u003Cdiv class=\u0022collapse navbar-collapse\u0022 id=\u0022navbarSupportedContent\u0022\u003E\n            \u003Cul class=\u0022navbar-nav me-auto mb-2 mb-lg-0\u0022\u003E\n                \u003Cli class=\u0022nav-item\u0022\u003E\n                    \u003Ca class=\u0022nav-link active\u0022 aria-current=\u0022page\u0022 href=\u0022#\u0022\u003EHome\u003C\/a\u003E\n                \u003C\/li\u003E\n                \u003Cli class=\u0022nav-item\u0022\u003E\n                    \u003Ca class=\u0022nav-link\u0022 href=\u0022#\u0022\u003ELink\u003C\/a\u003E\n                \u003C\/li\u003E\n                \u003Cli class=\u0022nav-item dropdown\u0022\u003E\n                    \u003Ca class=\u0022nav-link dropdown-toggle\u0022 href=\u0022#\u0022 id=\u0022navbarDropdown\u0022 role=\u0022button\u0022 data-bs-toggle=\u0022dropdown\u0022 aria-expanded=\u0022false\u0022\u003E\n                        Dropdown\n                    \u003C\/a\u003E\n                    \u003Cul class=\u0022dropdown-menu\u0022 aria-labelledby=\u0022navbarDropdown\u0022\u003E\n                        \u003Cli\u003E\u003Ca class=\u0022dropdown-item\u0022 href=\u0022#\u0022\u003EAction\u003C\/a\u003E\u003C\/li\u003E\n                        \u003Cli\u003E\u003Ca class=\u0022dropdown-item\u0022 href=\u0022#\u0022\u003EAnother action\u003C\/a\u003E\u003C\/li\u003E\n                        \u003Cli\u003E\u003Chr class=\u0022dropdown-divider\u0022\u003E\u003C\/li\u003E\n                        \u003Cli\u003E\u003Ca class=\u0022dropdown-item\u0022 href=\u0022#\u0022\u003ESomething else here\u003C\/a\u003E\u003C\/li\u003E\n                    \u003C\/ul\u003E\n                \u003C\/li\u003E\n                \u003Cli class=\u0022nav-item\u0022\u003E\n                    \u003Ca class=\u0022nav-link disabled\u0022\u003EDisabled\u003C\/a\u003E\n                \u003C\/li\u003E\n            \u003C\/ul\u003E\n            \u003Cform class=\u0022d-flex\u0022 role=\u0022search\u0022\u003E\n                \u003Cinput class=\u0022form-control me-2\u0022 type=\u0022search\u0022 placeholder=\u0022Search\u0022 aria-label=\u0022Search\u0022\u003E\n                \u003Cbutton class=\u0022btn btn-outline-success\u0022 type=\u0022submit\u0022\u003ESearch\u003C\/button\u003E\n            \u003C\/form\u003E\n        \u003C\/div\u003E\n    \u003C\/div\u003E\n\u003C\/nav\u003E\n\n\u003Cdiv class=\u0022container my-5\u0022\u003E\n    \u003Ch1\u003EHello, world!\u003C\/h1\u003E\n    \u003Cdiv class=\u0022col-lg-8 px-0\u0022\u003E\n        \u003Cp class=\u0022fs-5\u0022\u003EYou\u0027ve successfully loaded up the Bootstrap starter example. It includes \u003Ca href=\u0022https:\/\/getbootstrap.com\/\u0022\u003EBootstrap 5\u003C\/a\u003E via the \u003Ca href=\u0022https:\/\/www.jsdelivr.com\/package\/npm\/bootstrap\u0022\u003EjsDelivr CDN\u003C\/a\u003E and includes an additional CSS and JS file for your own code.\u003C\/p\u003E\n        \u003Cp\u003EFeel free to download or copy-and-paste any parts of this example.\u003C\/p\u003E\n\n        \u003Chr class=\u0022col-1 my-4\u0022\u003E\n\n        \u003Ca href=\u0022https:\/\/getbootstrap.com\u0022 class=\u0022btn btn-primary\u0022\u003ERead the Bootstrap docs\u003C\/a\u003E\n        \u003Ca href=\u0022https:\/\/github.com\/twbs\/examples\u0022 class=\u0022btn btn-secondary\u0022\u003EView on GitHub\u003C\/a\u003E\n    \u003C\/div\u003E\n\u003C\/div\u003E\n\n\u003Cscript src=\u0022https:\/\/cdn.jsdelivr.net\/npm\/[email protected]\/dist\/js\/bootstrap.bundle.min.js\u0022 integrity=\u0022sha384-kenU1KFdBIe4zVF0s0G1M5b4hcpxyD9F7jL+jjXkk+Q2h455rYXK\/7HAuoJl+0I4\u0022 crossorigin=\u0022anonymous\u0022\u003E\u003C\/script\u003E\n\u003Cscript src=\u0022main.js\u0022\u003E\u003C\/script\u003E\n\u003C\/body\u003E\n\u003C\/html\u003E","baseData":{},"rowData":[{}]}'

ducho avatar May 04 '23 13:05 ducho