生成TCPDF输出到共享驱动器文件夹

时间:2015-06-09 13:42:20

标签: php pdf path directory tcpdf

我试图将我的PDF文件保存到"共享文件夹",我使用配置文件来设置"共享文件夹"然后我只是在PHP文件中设置路径。

然而,它不允许我使用"共享文件夹"路径,它给了我错误:

join

它适用于Failed to open stream: No such file or directory ,我不想这样做,因为我无法访问根文件夹。

配置文件中的值以创建路径名

"C:/Path name/"

我读取文件和创建文件夹结构:

SharedFolder = //MIA_TEST/htdocs/SharedFolder

我使用TCPDF生成PDF,这里是生成PDF的代码行

PDF code1:

// Code to get values from config
function GetDictionaryOfUnsignedValues()
{
$fp = fopen("C:/ISOSEC/serverLicense.txt","r");

if ($fp ==  false)
    return null;

$UnsignedDataStarted    = false;
$UnsignedDataFinished = false;

$UnsignedData = "";

// Read the licence file line by line and extract signed data block as well as signature
while (($line = fgets($fp, 4096)) !== FALSE)
{
    if ($line == "ISOSEC NOT SIGNED:\n")
    {
        $UnsignedDataStarted = true;
        continue;
    }

    if ($UnsignedDataStarted and !$UnsignedDataFinished)
    {
        // When we come across an empty line (line length > 2), the signed dat block is finished
        if (strlen($line) > 2)
            $UnsignedData = $UnsignedData . $line;                  
        else
            $UnsignedDataFinished = true;           
    }
}

fclose($fp);

// Split the whole signed data block line by line
$ArrayOfLines = explode ("\n",$UnsignedData);

// Get the signed data into php easily accessible code - dctionary (associative array)
$UnsignedDataDictionary = array();

foreach ($ArrayOfLines as $line) 
{
    // Only lines containing ' = ' are valid lines
    if (strpos($line,' = ') !== false)
    {
        $keyValueArray = explode (" = ",$line);
        $UnsignedDataDictionary[$keyValueArray[0]] = $keyValueArray[1];
    }
}

if (count($UnsignedDataDictionary) < 1)
    return NULL;

return $UnsignedDataDictionary; 
}

// Create folder in folder
function createFolderInFolder($InputFolder, $newFolder)
{
if (!is_dir($InputFolder))
    return NULL;

$CreatedFolder = $InputFolder . '/' .$newFolder;

//we don't want to rewrite the folder with new one if it already exist
if (file_exists ($CreatedFolder))
    return $CreatedFolder;

$oldmask = umask(0);

if (mkdir($CreatedFolder, 0777))
{
    umask($oldmask);
    return $CreatedFolder;
}
else
    return NULL;
}



// Obtain shared folder from config file
// Then create output folder (or check if exist the output folder)

$ServerConfigDictionary = GetDictionaryOfUnsignedValues();
if ($ServerConfigDictionary == NULL)
    LogToLogFileAndFinishExecution("Discharge - Failed to obtain list of server configuration items from the server licence file");
if (!array_key_exists('SharedFolder', $ServerConfigDictionary))
    LogToLogFileAndFinishExecution("Discharge - Failed to obtain Shared folder location item from the server licence file");

// Get the shared folder location from the server config file
$SharedFolder = $ServerConfigDictionary['SharedFolder'];


// Check database connection, if not established, output an error and finish the script
if ($connection == NULL)
    LogToLogFileAndFinishExecution("Unable to establish database conection - unable to generate Postnatals");

if (($OutputFolder = createFolderInFolder($SharedFolder, "MIA - Digital Post Natal Records")) == NULL)
{
    LogMessageToServerLog($connection, 'Failed to create or find folder to store Discharges in shared directory', "ERROR", "Discharge.php");
    exit(0);
}

响应1:

//PDF Output
$pdf->Output($OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . '_' . $Mother->PatientTableRecord['NHSID'] . ' ' . date('d_m_Y') . '.pdf'),'F');  // $OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . ' ' . date('d_m_Y h_i_s', time() . '.pdf','F');

PDF代码2 :(添加了实际路径)

fopen(file:////MIA_TEST/htdocs/SharedFolder/MIA - Digital Post Natal Records/Fiona Appleton_1946546288 09_06_2015.pdf): failed to open stream: No such file or directory

回应2:

$pdf->Output(realpath($OutputFolderPath) . ReplaceWindowsFileNameSpecialCharacters($Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . '_' . $Mother->PatientTableRecord['NHSID'] . ' ' . date('d_m_Y') . '.pdf'),'F');  // $OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . ' ' . date('d_m_Y h_i_s', time()) . '.pdf','F');

PDF代码3:

fopen(): remote host file access not supported, file://\\MIA_TEST\HTDOCS\SharedFolder\MIA - Digital Post Natal RecordsFiona Appleton_1946546288 09_06_2015.pdf

回应3:

// Worked
fopen($OutputFolderPath."Text.pdf", "w");

// Didn't work
$pdf->Output($OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . '_' . $Mother->PatientTableRecord['NHSID'] . ' ' . date('d_m_Y') . '.pdf','F');  // $OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . ' ' . date('d_m_Y h_i_s', time()) . '.pdf','F'

// Works with no PDF content inside
fopen($OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . '_' . $Mother->PatientTableRecord['NHSID'] . ' ' . date('d_m_Y') . '.pdf','F');  // $OutputFolderPath . $Mother->PatientTableRecord['Forename'] . ' ' . $Mother->PatientTableRecord['Surname']  . ' ' . date('d_m_Y h_i_s', time()) . '.pdf','w');

2 个答案:

答案 0 :(得分:0)

如果

//MIA_TEST/htdocs/SharedFolder

是有效路径。保存PDF时不应该有任何问题。 PHP无法找到您指定的路径。

尝试做一个简单的

fopen("//MIA_TEST/htdocs/SharedFolder/sample.txt", "w");

如果这样可行,您的问题就解决了。请确保路径正确。还要检查目的地路径中是否有空格。

Output()

用下划线替换空格并删除特殊字符。您可能希望确保一切顺利。

http://www.tcpdf.org/doc/code/classTCPDF.html#a3d6dcb62298ec9d42e9125ee2f5b23a1

答案 1 :(得分:0)

我发现我可以使用它:

$savedOutput = file_get_contents('SavedOutput.pdf');
file_put_contents('newSavedOutput.pdf', $saveOutput);

我将PDF保存到文件夹中,然后获取内容并将其保存到共享文件夹