Xls to pdf php

XLS to PDF PHP API

Convert XLS sheets to PDF files with our PHP XLS to PDF API.

Why PSPDFKit API?

SOC 2 Compliant

Build the workflows you need without worrying about security. We don’t store any document data, and our API endpoints are served through encrypted connections.

Easy Integration

Get up and running in hours, not weeks. Access well-documented APIs and code samples that make integrating with your existing workflows a snap.

One Document, Endless Actions

With access to more than 30 tools, you can process one document in multiple ways by combining API actions. Convert, OCR, rotate, and watermark with one API call.

Simple and Transparent Pricing

Pay only for the number of documents you process. You won’t need to consider file size, datasets being merged, or different API actions being called.

Try It Out

This example will convert your uploaded Excel file to a PDF.

Use Your Free API Calls

Sign up to process 100 documents per month for free, or log in to automatically add your API key to sample code.

Читайте также:  Цвета html подобрать цвет

Add a File

Add an Excel file named document.xls to your project folder. You can also use our sample file.

The file name is case sensitive. Make sure the file name matches the file name in the sample code. The file name is case sensitive. Make sure the file name matches the file name in the sample code.

Run the Code

Copy the code and run it from the same folder you added the files to. For more information, see our language-specific getting started guides.

View the Results

Open result.pdf in your project folder to view the results.

curl -X POST https://api.pspdfkit.com/build \ -H "Authorization: Bearer your_api_key_here" \ -o result.pdf \ --fail \ -F document=@document.xls \ -F instructions=' < "parts": [ < "file": "document" >] >' 
curl -X POST https://api.pspdfkit.com/build ^ -H "Authorization: Bearer your_api_key_here" ^ -o result.pdf ^ --fail ^ -F document=@document.xls ^ -F instructions="]>" 
package com.example.pspdfkit; import java.io.File; import java.io.IOException; import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import org.json.JSONArray; import org.json.JSONObject; import okhttp3.MediaType; import okhttp3.MultipartBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.RequestBody; import okhttp3.Response; public final class PspdfkitApiExample < public static void main(final String[] args) throws IOException < final RequestBody body = new MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart( "document", "document.xls", RequestBody.create( new File("document.xls"), MediaType.parse("application/vnd.ms-excel") ) ) .addFormDataPart( "instructions", new JSONObject() .put("parts", new JSONArray() .put(new JSONObject() .put("file", "document") ) ).toString() ) .build(); final Request request = new Request.Builder() .url("https://api.pspdfkit.com/build") .method("POST", body) .addHeader("Authorization", "Bearer your_api_key_here") .build(); final OkHttpClient client = new OkHttpClient() .newBuilder() .build(); final Response response = client.newCall(request).execute(); if (response.isSuccessful()) < Files.copy( response.body().byteStream(), FileSystems.getDefault().getPath("result.pdf"), StandardCopyOption.REPLACE_EXISTING ); >else < // Handle the error throw new IOException(response.body().string()); >> > 
using System; using System.IO; using System.Net; using RestSharp; namespace PspdfkitApiDemo < class Program < static void Main(string[] args) < var client = new RestClient("https://api.pspdfkit.com/build"); var request = new RestRequest(Method.POST) .AddHeader("Authorization", "Bearer your_api_key_here") .AddFile("document", "document.xls") .AddParameter("instructions", new JsonObject < ["parts"] = new JsonArray < new JsonObject < ["file"] = "document" >> >.ToString()); request.AdvancedResponseWriter = (responseStream, response) => < if (response.StatusCode == HttpStatusCode.OK) < using (responseStream) < using var outputFileWriter = File.OpenWrite("result.pdf"); responseStream.CopyTo(outputFileWriter); >> else < var responseStreamReader = new StreamReader(responseStream); Console.Write(responseStreamReader.ReadToEnd()); >>; client.Execute(request); > > > 
// This code requires Node.js. Do not run this code directly in a web browser. const axios = require('axios') const FormData = require('form-data') const fs = require('fs') const formData = new FormData() formData.append('instructions', JSON.stringify( < parts: [ < file: "document" >] >)) formData.append('document', fs.createReadStream('document.xls')) ;(async () => < try < const response = await axios.post('https://api.pspdfkit.com/build', formData, < headers: formData.getHeaders(< 'Authorization': 'Bearer your_api_key_here' >), responseType: "stream" >) response.data.pipe(fs.createWriteStream("result.pdf")) > catch (e) < const errorString = await streamToString(e.response.data) console.log(errorString) >>)() function streamToString(stream) < const chunks = [] return new Promise((resolve, reject) => < stream.on("data", (chunk) =>chunks.push(Buffer.from(chunk))) stream.on("error", (err) => reject(err)) stream.on("end", () => resolve(Buffer.concat(chunks).toString("utf8"))) >) > 
import requests import json instructions = < 'parts': [ < 'file': 'document' >] > response = requests.request( 'POST', 'https://api.pspdfkit.com/build', headers = < 'Authorization': 'Bearer your_api_key_here' >, files = < 'document': open('document.xls', 'rb') >, data = < 'instructions': json.dumps(instructions) >, stream = True ) if response.ok: with open('result.pdf', 'wb') as fd: for chunk in response.iter_content(chunk_size=8096): fd.write(chunk) else: print(response.text) exit() 
 ] >'; curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.pspdfkit.com/build', CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_POSTFIELDS => array( 'instructions' => $instructions, 'document' => new CURLFILE('document.xls') ), CURLOPT_HTTPHEADER => array( 'Authorization: Bearer your_api_key_here' ), CURLOPT_FILE => $FileHandle, )); $response = curl_exec($curl); curl_close($curl); fclose($FileHandle); 

Using Postman? Download our official collection and start using the API with a single click. Read more →

Your API Key

Get access to your API key when you create an account. Once your account has been created, you’ll be able to process 100 documents per month for free using any of our API tools.

Your API key has automatically been inserted into the API example code. Run the sample code in your terminal to execute the API call.

Источник

Конвертирование экселевских файлов в PDF на php

Библиотека phpoffice/phpspreadsheet (подробнее в статье Работа с XLSX), среди всего прочего позволяет сохранять документы в нужном формате.

Для начала установил phpspreadsheet:

composer require phpoffice/phpspreadsheet

Но при первом же тесте, взятом из документации , получил ошибку
Fatal error: Uncaught PhpOffice\PhpSpreadsheet\Writer\Exception: No writer found for type Pdf,
дело в том, что работу с PDF phpoffice/phpspreadsheet производит через сторонние библиотеки и их нужно ставить отдельно.

Для первого теста выбрал mPDF

composer require mpdf/mpdf

И сразу получил сообщение open_basedir restriction in effect. File(/tmp) is not within the allowed path, а также выяснилось, что съедалось любое количество выделенной оперативной памяти.
Решилось проблема редактированием файла настроек хоста: php_admin_value open_basedir «/home/public/NAME.ru/:/tmp»

pic1

require_once('vendor/autoload.php'); use PhpOffice\PhpSpreadsheet\IOFactory; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Reader\Xlsx; use PhpOffice\PhpSpreadsheet\Writer\Pdf; $oReader = new Xlsx(); $oSpreadsheet = $oReader->load('i_Акт.xlsx'); $oWriter = IOFactory::createWriter($oSpreadsheet, 'Mpdf'); $oWriter->save('i_Акт.pdf');

Вторым выбрал Dompdf

composer require dompdf/dompdf
$oWriter = IOFactory::createWriter($oSpreadsheet, 'Dompdf'); // Mpdf => Dompdf

Результат получился лучше, но все равно не тот:

pic1

При тестоах выяснилось, что проблема именно в Dompdf:

use Dompdf\Dompdf; $dompdf = new Dompdf(); //$dompdf->set_option('defaultFont', 'dejavu sans'); //$dompdf->loadHtml( iconv("UTF-8", "windows-1251", 'Супер тест!' . rand(-10, 10) ) ); $dompdf->loadHtml( ' 

Супер

тест!'. rand(-10, 10), 'UTF-8' ); // (Optional) Setup the paper size and orientation $dompdf->setPaper('A4', 'landscape'); // Render the HTML as PDF $dompdf->render(); // Output the generated PDF to Browser $dompdf->stream();

— тоже выдает не верную кодировку.

Попробовал заменить его стандартные шрифты на такие же, но с поддержкой кириллиц — результат не получил.

Временно отложил эту библиотеку.

Третий тест был для TCPDF

composer require tecnickcom/tcpdf
$oWriter = IOFactory::createWriter($oSpreadsheet, 'Tcpdf'); // Tcpdf

Первый Вариант, оказался не очень:

pic1

В заключении

Лучший вариант был у библиотеки mPDF

Для остальных нужно тестировать разные настройки, как это сделать описывается в документации в разделе Custom implementation or configuration

class My_Custom_TCPDF extends TCPDF < // . >class My_Custom_TCPDF_Writer extends \PhpOffice\PhpSpreadsheet\Writer\Pdf\Tcpdf < protected function createExternalWriterInstance($orientation, $unit, $paperSize) < $instance = new My_Custom_TCPDF($orientation, $unit, $paperSize); // more configuration of $instance return $instance; >> \PhpOffice\PhpSpreadsheet\IOFactory::registerWriter('Pdf', MY_TCPDF_WRITER::class);

Источник

How to Convert Excel to PDF Using PHP

Vyom Srivastava

Illustration: How to Convert Excel to PDF Using PHP

In this post, you’ll learn how to convert Excel files to PDFs using PSPDFKit’s XLSX to PDF PHP API. With our API, you can convert up to 100 PDF files per month for free. All you need to do is create a free account to get access to your API key.

PSPDFKit API

Document conversion is just one of our 30+ PDF API tools. You can combine our conversion tool with other tools to create complex document processing workflows. You’ll be able to convert various file formats into PDFs and then:

  • Merge several resulting PDFs into one
  • OCR, watermark, or flatten PDFs
  • Remove or duplicate specific PDF pages

Once you create your account, you’ll be able to access all our PDF API tools.

Step 1 — Creating a Free Account on PSPDFKit

Go to our website, where you’ll see the page below, prompting you to create your free account.

Free account PSPDFKit API

Once you’ve created your account, you’ll be welcomed by the page below, which shows an overview of your plan details.

Free plan PSPDFKit API

As you can see in the bottom-left corner, you’ll start with 100 documents to process, and you’ll be able to access all our PDF API tools.

Step 2 — Obtaining the API Key

After you’ve verified your email, you can get your API key from the dashboard. In the menu on the left, click API Keys. You’ll see the following page, which is an overview of your keys:

Convert Excel to PDF PHP API Key

Copy the Live API Key, because you’ll need this for the Excel to PDF API.

Step 3 — Setting Up Folders and Files

Now, create a folder called excel_to_pdf and open it in a code editor. For this tutorial, you’ll use VS Code as your primary code editor. Next, create two folders inside excel_to_pdf and name them input_documents and processed_documents .

Now, copy your Excel file to the input_documents folder and rename it to document.xlsx . You can use our demo document as an example.

Then, in the root folder, excel_to_pdf , create a file called processor.php . This is the file where you’ll keep your code.

Your folder structure will look like this:

excel_to_pdf ├── input_documents | └── document.xlsx ├── processed_documents └── processor.php

Step 4 — Writing the Code

Open the processor.php file and paste the code below into it:

 $FileHandle = fopen('processed_documents/result.pdf', 'w+'); $curl = curl_init(); $instructions = ' < "parts": [ < "file": "document" >] >'; curl_setopt_array($curl, array( CURLOPT_URL => 'https://api.pspdfkit.com/build', CURLOPT_CUSTOMREQUEST => 'POST', CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => '', CURLOPT_POSTFIELDS => array( 'instructions' => $instructions, 'document' => new CURLFILE('input_documents/document.xlsx') ), CURLOPT_HTTPHEADER => array( 'Authorization: Bearer YOUR API KEY HERE ' ), CURLOPT_FILE => $FileHandle, )); $response = curl_exec($curl); curl_close($curl); fclose($FileHandle);

ℹ️ Note: Make sure to replace YOUR_API_KEY_HERE with your API key.

Code Explanation

In the code above, you first create a FileHandle variable that will allow you to save the file in the processed_documents folder.

Then, you create the instructions variable, where all the instructions for the API will be stored in the form of a JSON string. Finally, you make a CURL request.

Output

To execute the code, run the command below:

On successful execution, you’ll see a new processed file, result.pdf , located in the processed_documents folder.

The folder structure will look like this:

excel_to_pdf ├── input_documents | └── document.xlsx ├── processed_documents | └── result.pdf └── processor.php

Final Words

In this post, you learned how to easily and seamlessly convert Excel files to PDF documents for your PHP application using our Excel to PDF PHP API.

You can integrate all of these functions into your existing applications. With the same API token, you can also perform other operations, such as merging several documents into a single PDF, adding watermarks, and more. To get started with a free trial, sign up here.

Источник

Оцените статью