PDF ファイル形式は、さまざまなデバイスやプラットフォームで表示でき、文書の構造と書式を保持する、広く使用されているファイル形式です。ただし、場合によっては PDF ファイルの内容を変更または編集する必要があり、PDF ファイルは編集または変更が簡単なファイル形式ではありません。したがって、XML 形式は解析と編集が容易で、さまざまなアプリケーション環境に適応できるため、PDF ファイルを XML 形式に変換する方が便利です。
この記事では、JavaScript を使用して PDF ファイルを XML 形式に変換する方法と、XML ファイル内のデータを解析して抽出する方法を紹介します。
PDF から XML
ステップ 1: PDF.js ライブラリを取得する
PDF ファイルを JavaScript で XML ファイルに変換するには、PDF.js ライブラリを使用する必要があります。 PDF.js は、Web アプリケーションで PDF ファイルをレンダリングするための JavaScript ライブラリです。このライブラリは、公式 Web サイト (http://mozilla.github.io/pdf.js/) から入手できます。
ステップ 2: HTML ページを作成する
PDF.js ライブラリ ファイルとその他の必要な JavaScript ファイルを HTML ページに導入する必要があります。
<meta charset="UTF-8"> <title>PDF to XML Conversion</title> <script type="text/javascript" src="pdf.js"></script> <script type="text/javascript" src="pdf.worker.js"></script> <script type="text/javascript" src="xmlwriter.js"></script> <script type="text/javascript" src="pdf2xml.js"></script>
<input type="file" id="pdf-file" onchange="handleFileSelect()"> <div id="pdf-holder"></div> <div id="xml-holder"></div>
この HTML ページでは、PDF ファイルをアップロードするための input 要素と、PDF ファイルと変換された XML ファイルを表示するための 2 つの div 要素を作成しました。
ステップ 3: JavaScript ファイルを作成する
PDF ファイルを XML ファイルに変換するために、pdf2xml.js という名前の JavaScript ファイルを作成する必要があります。
var pdfDoc = null,
pageNum = 1, pageRendering = false, pageNumPending = null, canvas = document.createElement('canvas'), ctx = canvas.getContext('2d');
/**
ページテキストの取得
*/
function getPageText(pageNum, textContent) {
return new Promise(function(resolve, respect) {
pageRendering = true; pdfDoc.getPage(pageNum).then(function(page) { var viewport = page.getViewport(1.0); canvas.height = viewport.height; canvas.width = viewport.width; var renderContext = { canvasContext: ctx, viewport: viewport }; page.render(renderContext).promise.then(function() { var textLayer = document.createElement('div'); textLayer.setAttribute('class', 'textLayer'); document.getElementById('pdf-holder').appendChild(textLayer); var viewport = page.getViewport(1.0); var textContent = new TextContent(); page.getTextContent({normalizeWhitespace: true }).then(function(content) { textContent = content; var textLayerDiv = document.getElementById('pdf-holder').getElementsByClassName('textLayer')[0]; PDFJS.renderTextLayer({ textContent: textContent, container: textLayerDiv, viewport: viewport, textDivs: [] }); resolve(textContent); }); }); });
});
}
*/
function getTextBlocks(textContent) {
var textBlocks = [ ];
var item = textContent.items[i]; // 判断是否是文本 if (item.str.trim().length > 0) { var textBlock = { x: item.transform[4], y: item.transform[5], w: item.width, h: item.height, text: item.str }; textBlocks.push(textBlock); }
}
*/
functiongenerateXML(textBlocks) {
var xmlString = '\n
var xml = new XMLWriter(' ');
xml .beginElement('pages');
var textBlock = textBlocks[i]; xml.beginElement('page'); xml.writeAttribute('number', pageNum); xml.writeAttribute('x', textBlock.x.toFixed(2)); xml.writeAttribute('y', textBlock.y.toFixed(2)); xml.writeAttribute('width', textBlock.w.toFixed(2)); xml.writeAttribute('height', textBlock.h.toFixed(2)); xml.text(textBlock.text); xml.endElement();
xmlString = '\n';
}
*/
function handleFileSelect() {
var file = document.getElementById('pdf-file').files [0];
var fileReader = new FileReader(); fileReader.onload = function(e) { var data = new Uint8Array(e.target.result); PDFJS.getDocument(data).then(function(pdfDoc_) { pdfDoc = pdfDoc_; // 获取文本 getPageText(pageNum).then(function(textContent) { // 获取文本块 var textBlocks = getTextBlocks(textContent); // 生成XML文件 generateXML(textBlocks); }); }); }; fileReader.readAsArrayBuffer(file);
}
$xml = $(xmlDoc), $pages = $xml.find('pages'), $page = $pages.find('page[number="1"]');
$xml = $(xmlDoc), $page = $xml.find('page[number="1"]');
この記事では、JavaScript と PDF.js ライブラリを使用して PDF ファイルを XML ファイルに変換し、XMLWriter ライブラリを使用して XML ファイルを生成する方法を紹介しました。 XPath と jQuery を使用して XML ファイルからデータを抽出する方法についても説明しました。
PDF ファイルと比較して、XML ファイルは解析と処理が簡単です。 PDFファイルをXMLファイルに変換することで、データの管理や利用が容易になり、さまざまなアプリケーション環境で利用できるようになります。
以上がJavaScript を使用して PDF ファイルを XML 形式に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。