- XLS to PDF PHP API
- Why PSPDFKit API?
- SOC 2 Compliant
- Easy Integration
- One Document, Endless Actions
- Simple and Transparent Pricing
- Try It Out
- Use Your Free API Calls
- Add a File
- Run the Code
- View the Results
- Your API Key
- Конвертирование экселевских файлов в PDF на php
- Для первого теста выбрал mPDF
- Вторым выбрал Dompdf
- Супер
- Третий тест был для TCPDF
- В заключении
- How to Convert Excel to PDF Using PHP
- PSPDFKit API
- Step 1 — Creating a Free Account on PSPDFKit
- Step 2 — Obtaining the API Key
- Step 3 — Setting Up Folders and Files
- Step 4 — Writing the Code
- Code Explanation
- Output
- Final Words
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.
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»
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
Результат получился лучше, но все равно не тот:
При тестоах выяснилось, что проблема именно в 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
Первый Вариант, оказался не очень:
В заключении
Лучший вариант был у библиотеки 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
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.
Once you’ve created your account, you’ll be welcomed by the page below, which shows an overview of your plan details.
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:
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.